版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cuicanxingchen123456/article/details/88977152
题目描述
统计一个数字在排序数组中出现的次数。
Input:
nums = 1, 2, 3, 3, 3, 3, 4, 6
K = 3
Output:
4
解题思路
题是用了一个二分查找,确实是更快一些。
public int GetNumberOfK(int[] nums, int K) {
int first = binarySearch(nums, K);
int last = binarySearch(nums, K + 1);
return (first == nums.length || nums[first] != K) ? 0 : last - first;
}
private int binarySearch(int[] nums, int K) {
int l = 0, h = nums.length;
while (l < h) {
int m = l + (h - l) / 2;
if (nums[m] >= K)
h = m;
else
l = m + 1;
}
return l;
}
另一个种直接从头开始找的:
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if(array.length==0){
return 0;
}
int sum=0;
int i=0;
while(i<array.length){
if(array[i]==k){
int j=i;
while(j<array.length&&array[j]==k){
sum++;
j=j+1;
}
return sum;
}
i+=1;
}
return 0;
}
}