思路:
因为data中都是整数,所以可以稍微变一下,不是搜索k的两个位置,而是搜索k-0.5和k+0.5,返回值应该是这两个数插入的位置,然后相减就可得k出现的次数即可。(思路很巧妙,运用二分法实现)
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return self.bisearch(data,k+0.5)-self.bisearch(data,k-0.5)
def bisearch(self,data,num):
low=0
high=len(data)-1
while low<=high:
mid=(low+high)/2
if data[mid]>num:
high=mid-1
elif data[mid]<num:
low=mid+1
return low
python函数法。
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)