统计一个数字在排序数组中出现的次数。
思路二分法
public class Solution {
int[] a;
int k;
public int getNumberOfK(int [] array , int k) {
if (array == null || array.length == 0) return 0;
this.a = array;
this.k = k;
return get(0, a.length - 1);
}
private int get(int i, int j) {
if (i > j) return 0;
if (i == j) return a[i] == k ? 1 : 0;
int mid = (i + j) / 2;
if (a[mid] > k) {
return get(i, mid - 1);
} else if (a[mid] < k) {
return get(mid + 1, j);
} else {
if (a[i] == a[j] && a[i] == k) return j - i + 1;
return get(i, mid - 1) + 1 + get(mid + 1, j);
}
}
}
网友评论