【题目描述】
统计一个数字在排序数组中出现的次数。
【思路】
排序数组的查找,就应该想到二分查找,查找效率可以从n变为logn。 先二分查找找到k,再从此处向左右延伸,统计数量即可。
【代码】
python:
class Solution:
def GetNumberOfK(self, data, k):
index=self.findindex(data,k)
if(index==-1):
return 0
count=0
for i in range(index+1,len(data)):
if(data[i]==k):
count+=1
else:
break
for i in range(index,-1,-1):
if(data[i]==k):
count+=1
else:
break
return count
def findindex(self,data,k):
left=0
right=len(data)-1
while(left<=right):
mid=(left+right)//2
if(data[mid]<k):
left=mid+1
elif(data[mid]>k):
right=mid-1
else:
return mid
return -1