题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
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; } }
思路:二分法找到具体在哪,然后连续找左右两边的个数计数。