劍指Offer35:數字在排序陣列中出現的次數
阿新 • • 發佈:2018-12-26
思路:
因為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)