首页 > 编程语言 > 详细

JZ37 数字在升序数组中出现的次数

时间:2021-08-14 11:45:42      阅读:9      评论:0      收藏:0      [点我收藏+]

原题链接


描述

统计一个数字在升序数组中出现的次数。


示例

输入:[1,2,3,3,3,3,4,5],3
返回值:4

思路

二分法首先招待该元素,然后依次向前后遍历,记录相同元素的个数。


解答

public class Solution {
    public static int GetNumberOfK(int[] array, int k) {
        int cnt = 0;
        int l = 0, h = array.length - 1;
        int index = 0;
        while (l < h) {
            int m = (l + h) / 2;
            if (array[m] > k) {
                h = m;
            } else if (array[m] < k) {
                l = m + 1;
            } else {
                index = m;
                break;
            }
        }
        int i = index, j = index + 1;
        while (i >= 0 && array[i] == k) {
            if (array[i--] == k) cnt++;
        }
        while (j < array.length && array[j] == k) {
            if (array[j++] == k) cnt++;
        }
        return cnt;
    }

}

JZ37 数字在升序数组中出现的次数

原文:https://www.cnblogs.com/klaus08/p/15139496.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!