題目描述
統計一個數字在排序數組中出現的次數
思路
最賤的方法依舊是count計數。。
當然,,看到有序數組就應該想到二分法,找到重復數字左邊和右邊的數字,然后兩個相減就可以了
解答
方法1 count
class Solution: def GetNumberOfK(self, data, k): # write code here if not data or len(data) ==0: return 0 return data.count(k)
方法2,不用count的計數方法
class Solution: def GetNumberOfK(self, data, k): # write code here if not data or len(data) ==0: return 0 num = 0 for i in data: if i == k: num += 1 return num
方法3,二分法
class Solution: def GetNumberOfK(self, data, k): left=0 right=len(data)-1 leftk=self.getleftK(data,k,left,right) rightk=self.getrightK(data,k,left,right) return rightk-leftk+1 def getleftK(self,data,k,left,right):###查找重復數字中最左邊的那個數字位置 while left<=right: middle=(left+right)//2 if data[middle]<k: left=middle+1 else: right=middle-1 return left def getrightK(self,data,k,left,right):###查找重復數字最右邊的那個數字位置 while left<=right: middle=(left+right)//2 if data[middle]<=k: left=middle+1 else: right=middle-1 return right