【剑指offer】数字在排序数组中出现的次数 python

714 阅读1分钟

【题目描述】

统计一个数字在排序数组中出现的次数。

【思路】

排序数组的查找,就应该想到二分查找,查找效率可以从n变为logn。 先二分查找找到k,再从此处向左右延伸,统计数量即可。

【代码】

python:

class Solution:
    def GetNumberOfK(self, data, k):
        index=self.findindex(data,k)
        if(index==-1):
            return 0
        count=0
        for i in range(index+1,len(data)):
            if(data[i]==k):
                count+=1
            else:
                break
        for i in range(index,-1,-1):
            if(data[i]==k):
                count+=1
            else:
                break
        return count
        
    def findindex(self,data,k):
        left=0
        right=len(data)-1
        while(left<=right):
            mid=(left+right)//2
            if(data[mid]<k):
                left=mid+1
            elif(data[mid]>k):
                right=mid-1
            else:
                return mid
        return -1