剑指offer_统计一个数字在排序数组中出现的次数
方法一:直接遍历
1 public class Solution { 2 public int GetNumberOfK(int [] array , int k) { 3 int count=0; 4 for(int arr : array){ 5 if(arr==k) count++; 6 } 7 return count; 8 } 9 }
方法二:
二分查找
1 public class Solution { 2 public int GetNumberOfK(int [] array , int k) { 3 int first = getNum(array,k); 4 int last = getNum(array,k+1); 5 return (first==array.length||array[first]!=k)?0:last-first; 6 } 7 public int getNum(int [] array,int k){ 8 int l=0; 9 int r=array.length; 10 while(l<r){ 11 int m=l+(r-l)/2; 12 if(array[m]>=k){ 13 r=m; 14 }else{ 15 l=m+1; 16 } 17 } 18 return l; 19 20 } 21 }

浙公网安备 33010602011771号