1.题目:
统计一个数字在升序数组中出现的次数。
2.思路:
方法一: 暴力解法;遍历完后计数输出
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int count=0;
for(int i=0;i<array.length;i++){
if(array[i]==k) count++;
}
return count;
}
}
方法二:先用二分法缩小遍历范围
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int left=0;
int right=array.length-1;
int count=0;
while(left<right){
int mid=(left+right)/2;
if(array[mid]<k){//k在右边,下边界增大
left=mid+1;
}else if(array[mid]>k){//k在左边,上边界减小
right=right-1;
}else{//找到K值,说明一定此时的边界的范围内
break;
}
}
for(int i=left;i<=right;i++){
if(array[i]==k){
count++;
}
}
return count;
}
}
京公网安备 11010502036488号