题目描述
统计一个数字在排序数组中出现的次数。
分类:数组
解法1:二分法,找到该数字以后,向两边扩展统计出现的次数
- public class Solution {
- public int GetNumberOfK(int [] array , int k) {
- if(array.length==0) return 0;
- int low = 0;
- int high = array.length-1;
- int mid = (low+high)/2;
- int count = 0;
- while(low<=high){
- mid = (low+high)/2;
- if(array[mid]>k){
- high = mid-1;
- }else if(array[mid]<k){
- low = mid+1;
- }else{
- count = 1;
- int temp = mid-1;
- while(temp>=0 && array[temp]==array[mid]){
- count++;
- temp--;
- }
- temp = mid+1;
- while(temp<array.length && array[temp]==array[mid]){
- count++;
- temp++;
- }
- break;
- }
- }
- return count;
- }
- }
原文链接 http://blog.csdn.net/crazy__chen/article/details/45012893