剑指offer-数字在排序数组中出现的次数-数组-python
题目描述
统计一个数字在排序数组中出现的次数。
python 内置函数 count()一行就能搞定
解题思路
二分查找到给定的数字及其坐标。以该坐标为中点,向前向后找到这个数字的 始 – 终 位置。
class Solution: def GetNumberOfK(self, data, k): if len(data)<1: return 0 mid = len(data)//2 if data[mid] == k: start,end = mid,mid for i in range(mid,-1,-1): if data[i]==k:start-=1 for j in range(mid+1,len(data)): if data[j]==k:end+=1 return end - start elif data[mid] < k: return self.GetNumberOfK(data[:mid],k) else: return self.GetNumberOfK(data[mid+1:],k) print Solution().GetNumberOfK([1,2,3,3,3,3],3)