LeetCode中如何在排序数组中查找数字
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,小编给大家分享一下LeetCode中如何在排序数组中查找数字,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!题目描述统计一个数字在排序数组中出现的次数。0 <= 数组长度 <= 500
千家信息网最后更新 2025年12月01日LeetCode中如何在排序数组中查找数字
小编给大家分享一下LeetCode中如何在排序数组中查找数字,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
题目描述
统计一个数字在排序数组中出现的次数。
0 <= 数组长度 <= 50000
题目样例
示例
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
题目思考
可以用小于 O(N)的时间复杂度得出结果吗? 可以做到 O(1) 空间复杂度吗?
解决方案
思路
一个比较容易想到的思路是使用一个计数字典, 遍历一遍数组统计每个数的出现次数, 最后返回 target 的次数. 但这样时间和空间复杂度都是 O(N), 也用不上题目中数组是排序的这一条件 如何利用排序这一条件统计数字出现次数呢? 我们可以尝试二分查找的思路, 分别找到该数字的左右边界对应的下标, 然后次数就是 右边界-左边界+1(数组存在该数字的情况下)查找左边界: 如果找到等于 target 的数时, 需要继续往左找. 而如果数组中没有等于 target 的数, 则直接返回 None, 此时就知道该数字的出现次数为 0 了, 无需继续找右边界 查找右边界: 如果找到等于 target 的数时, 需要继续往右找 注意可以将二分查找代码整合到一个方法中, 传入一个 flag 标记当前是找左边界还是右边界, 以减少代码冗余 下面代码对必要的步骤有详细的解释, 方便大家理解
复杂度
时间复杂度 O(logN): 二分查找两次 空间复杂度 O(1): 只定义了几个变量
代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
def binarySearch(isleft):
# 传入flag isleft, 标记当前是查找左边界还是右边界
s, e = 0, len(nums) - 1
# 初始化结果为None
res = None
while s <= e:
m = (s + e) >> 1
if nums[m] == target:
if isleft:
# 当前查找的是左边界, 更新结果为等于target的更小的下标, 同时向左继续查找
res = m if res is None else min(res, m)
e = m - 1
else:
# 当前查找的是右边界, 更新结果为等于target的更大的下标, 同时向右继续查找
res = m if res is None else max(res, m)
s = m + 1
elif nums[m] < target:
s = m + 1
else:
e = m - 1
return res
left = binarySearch(True)
if left is None:
# 如果左边界不存在, 则说明整个数组没有target, 直接返回0
return 0
right = binarySearch(False)
# 最终结果就是右边界-左边界+1
return right - left + 1看完了这篇文章,相信你对"LeetCode中如何在排序数组中查找数字"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
数组
数字
右边
复杂
复杂度
次数
排序
结果
代码
题目
下标
思路
时间
空间
统计
同时
就是
条件
标记
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
7月单路塔式服务器选购指南
web软件开发合同
上海软件开发驻场费用
中证指数软件开发在哪里工作
服务器挂机需要什么系统
sql数据库实例改名
比特币网络安全设置
中国银河证券软件开发
中小学生网络安全手抄报小学
二手服务器cpu排行榜一览表
数据库怎样驱动jar包
泸州软件开发简介
辽宁软件开发代理商市场
网络安全班会课 ppt
亚信科技 数据库
厦门誉游网络技术有限
csgo僵尸服服务器
领域服务器
海南小型服务器
ios游戏数据库
珠海微信软件开发定制
数据库带小数点
格力应用软件开发
服务器挂机需要什么系统
维护网络安全的重要性征文
h77主板支持服务器内存吗
同心协力筑牢网络安全防线
阿里云购买了服务器怎么使用
张店物流竞价报价软件开发公司
厦门誉游网络技术有限