二分法,找到上界和下界
class Solution:
def GetNumberOfK(self, data, k):
n=len(data)
l=0
r=n
ans=0
# 找到升序序列中的下界
while(l<r):
mid=(l+r)//2
if(data[mid]<k):
l=mid+1
else:
r=mid
left=l
# 找到升序序列中的上界
l=0
r=n
while(l<r):
mid=(l+r)//2
if(data[mid]<=k):
l=mid+1
else:
r=mid
right=l
#上界减去下界为数字在升序数组出现的次数
return right-left