暴力法遏乔,也沒用到排序
創(chuàng)建一個字典,記錄每個數(shù)的出現(xiàn)次數(shù)犯眠,之后返回就可以了按灶。
def GetNumberOfK(self, data, k):
# write code here
d = dict()
for i in data:
if i not in d:
d[i] =1
else:
d[i] +=1
if k not in d:
return 0
return d[k]
二分法,因為是排序的數(shù)字筐咧,所以二分法是一個比較好的選擇鸯旁。
使用二分法找到對應的數(shù),然后向前判斷前面的數(shù)是否為相等的數(shù)量蕊,向后判斷也一樣铺罢,之后返回。
def GetNumberOfK(self, data, k):
# write code here
if not data:
return 0
count = 0
l =0
r = len(data)-1
mid = (l+r)//2
while l<=r:
if data[mid]>k:
r = mid
mid = (r+l)//2
if data[mid]<k:
l = mid
mid = (r+l)//2
if data[mid]==k:
p = mid
while p>=0 and data[p]==k :
count +=1
p -=1
p = mid
while p< len(data) and data[p]==k :
count +=1
p+=1
return count-1
return count