剑指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)

 

posted @ 2019-12-19 10:21  ayew  阅读(342)  评论(0编辑  收藏  举报