统计一个数字在排序数组中出现的次数。
//思路,因为是排序数组,所以指定数字的出现肯定是连续的。后面可以不用再遍历。 public int GetNumberOfK(int [] array , int k) { int count=0; for(int a:array){ if(a==k){ ++count; }else if(count>0){ break; } } return count; }
看了下一叶浮尘的回答。还是大佬的叶姐的解法牛逼。
import java.util.Arrays; public class Solution { //思路,二叉搜索。 public int GetNumberOfK(int [] array , int k) { int index=Arrays.binarySearch(array,k); if(index<0){ return 0; } int count=1; for(int i=index+1;i<array.length&&array[i]==k;i++){ count++; } for(int j=index-1;j>=0&&array[j]==k;j--){ count++; } return count; } }