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; } }