python提供3种方法吧

① 暴力法

啊暴力是个好东西
把列表从头到尾遍历一遍
计数器累加就行了
代码:
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法)

python就很灵性
他有好多内置函数
那所以
代码:
class Solution:
    def GetNumberOfK(self,data,k):
        return data.count(k)
就酱紫~😃