题目描述
统计一个数字在排序数组中出现的次数。
思路
二分查找,找到该数字出现的第一个、最后一个位置
代码
class Solution:
def GetNumberOfK(self, data, k):
# write code here
if len(data)<1:
return 0
low=0
high=len(data)-1
while low<high:
mid=low+(high-low)/2
if data[mid]<k:
low=mid+1
else:
high=mid
if data[low]!=k:
return 0
while low>0 and data[low]==data[low-1]:
low-=1
while high<len(data)-1 and data[high]==data[high+1]:
high+=1
return high-low+1