题目
统计一个数字在排序数组中出现的次数。
思路1
直接暴力
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int sum=0;
for(int i=0;i<array.length;i++){
if(array[i]==k)
sum++;
}
return sum;
}
}
思路二
看见数组有序就可以知道使用二分查找
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int sum=0;
int start=0,end=array.length;
while(start<end)
{
int mid=start+(end-start)/2;
if(array[mid]>k) end=mid;
else if(array[mid]<k) start=mid+1;
else{
int left=mid,right=mid;
while(left>=0&&array[mid]==array[left]) left--;
while(right<array.length&&array[mid]==array[right]) right++;
sum=right-left-1;
break;
}
}
return sum;
}
}
其他的题题解
剑指offer题解 java版