题目描述
统计一个数字在排序数组中出现的次数。
排序数组:二分法查找,统计次数
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
if not data:return 0#注意为空的情况
count=0
start=0
end=len(data)-1
while start<=end:
mid=(start+end)/2
if data[mid]<k:
start=mid+1
if data[mid]>k:
end=mid-1
if data[mid]==k:
while(mid>=0 and data[mid]==k):#中间向左找到最前一个
mid-=1#最后的mid位置不是数字k
mid+=1#回到第一个数字k的位置
while(mid<=len(data)-1 and data[mid]==k):
mid+=1
count+=1
return count
return 0
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if (array.length==0) return 0;
int count=0;
int start=0;
int end=array.length-1;
while (start<=end){
int mid=(start+end)>>1;
if (k<array[mid]) end=mid-1;
if(k>array[mid]) start=mid+1;
if(k==array[mid]){
while(mid>=0 && k==array[mid]){
mid-=1;
}
mid+=1;
while(mid<=array.length-1 && k==array[mid]){
mid+=1;
count+=1;
}
return count;
}
}
return 0;
}
}