剑指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 }

 

posted @ 2019-09-10 09:47  chyblogs  阅读(135)  评论(0)    收藏  举报