题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if(array.length == 0){
return 0;
}
// 有序数组,想到用二分法来解决找数据
int left = 0 , right = array.length - 1 , mid = 0;
while(left < right){
mid = left + (right - left)/2;
if(array[mid] > k){
right = mid;
}else if(array[mid] < k){
left = mid + 1;
}else{
break;
}
}
int count = 0;
if(array[mid] != k){
return count;
}
// 左边
for(int i = mid;i >= 0; i-- ){
if(array[i] == k){
count++;
}
}
// 右边
for(int i = mid; i < array.length; i++){
if(array[i] == k){
count++;
}
}
return count-1;
}
}
思路:二分法找到具体在哪,然后连续找左右两边的个数计数。
