JZ37 数字在升序数组中出现的次数
原题链接
描述
统计一个数字在升序数组中出现的次数。
示例
输入:[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;
}
}
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15139496.html