leetcode--在排序数组中查找数字(二分查找)

本文介绍了一种使用二分查找算法统计排序数组中特定数值出现频率的方法。通过找到目标值及其前一个值的位置,计算两者之间的差值,即可得到目标值在数组中的出现次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源:链接

题目描述:

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

 

示例 1:

输入:nums = [5,7,7,8,8,10],target = 8

输出:0

代码实现:

def func(nums,target):
    def handler(tar):
        i,j = 0, len(nums)-1
        while i<=j:
            m = (i+j)//2
            if nums[m]<=tar:
                i = m+1
            else:
                j = m-1
        return i
    return handler(target)-handler(target-1)

解题思路:

通过二分查找,找出target的下标,再找出target-1的下标,尽管target-1不一定在nums里面

但是依旧可以返回下标(比target小的且在nums中的)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值