benjamin.li的小屋

认真投入的做一件事情,让这件事情有结果

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

题目描述

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

思路:

这个题最优解法是直接用两个二分法找左右两边的index,所以,这里我们直接找k-0.5, k+0.5的index就可以解决问题。但是这里要特别注意边界条件,是while left <= right

# -*- coding:utf-8 -*-
class Solution:
    def GetNumberOfK(self, data, k):
        # write code here
        left = self.helper(data,k-0.5)
        right = self.helper(data, k+0.5)
        return right-left
    
    
    def helper(self, data, k):
        left = 0
        right = len(data)-1
        mid = (left+right)//2
        while left <= right:
            if data[mid] < k:
                left = mid+1
            elif data[mid] > k:
                right = mid-1
            mid = (left+right)//2
        return mid

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38111819/article/details/79944843
上一篇【剑指offer】两个链表的第一个公共结点
下一篇【剑指offer】判断是否是平衡二叉树
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭