① 暴力法
啊暴力是个好东西
把列表从头到尾遍历一遍
计数器累加就行了
代码:
class Solution: def GetNumberOfK(self,data,k): if data is None: return 0 ans=0 for i in data: if i==k: ans+=1 return ans这里特不特判无所谓了
时间复杂度:O(n)
空间复杂度:O(1)
② 二分法
先寻找左边界再寻找右边界
两次查找确定范围就可以了
代码:
class Solution: def GetNumberOfK(self,data,k): lbound,rbound=0,0 l,r=0,len(data) while l<r: mid=(l+r)/2 if data[mid]<k: l=mid+1 else: r=mid lbound=l l,r=0,len(data) while l<r: mid=(l+r)/2 if data[mid]<=k: l=mid+1 else: r=mid rbound=l return rbound-lbound
时间复杂度:O(logn)
空间复杂度:O(1)
③ 内置函数法(也称不要face法)
那
就很灵性
他有好多内置函数
那所以
代码:
class Solution: def GetNumberOfK(self,data,k): return data.count(k)就酱紫~😃