当前位置: 首页 > news >正文

[特殊字符] 高效统计排序数组中目标元素的出现次数

给定一个已排序的数组和一个目标值如何快速统计该目标值在数组中出现的次数这是面试中非常经典的一道题今天就来聊聊两种解法线性搜索和二分搜索。问题描述假设有一个已排序的数组arr[]和一个整数target需要找出target在数组中出现的次数。示例输入arr[] [1, 1, 2, 2, 2, 2, 3],target 2输出42 出现了 4 次输入arr[] [1, 1, 2, 2, 2, 2, 3],target 4输出04 不在数组中方法一线性搜索暴力法思路遍历整个数组遇到与目标值相等的元素就计数加 1。代码实现PythondefcountFreq(arr,target):res0foriinrange(len(arr)):ifarr[i]target:res1returnres arr[1,1,2,2,2,2,3]target2print(countFreq(arr,target))# 输出 4复杂度分析时间复杂度O(n)因为需要遍历整个数组。空间复杂度O(1)只用了常数空间。这种方法简单直观但当数组很大时效率较低。刷算法题时遇到“排序数组中查找目标元素出现次数”这类问题你是不是也卡在边界条件和二分查找的细节上其实理解这类问题的核心关键在于把抽象的逻辑“看”清楚。强烈安利一个神器——图码它提供60多种数据结构和算法的交互式动画可视化能帮你把二分查找的每一步都“动”起来。更绝的是你可以直接上传自己的C/C/Java/Python代码或者输入自定义数据让网站自动生成动画直观看到代码执行过程。无论你是备战408考研还是准备数据结构期末考试它都能把晦涩的算法拆解得明明白白。现在就去看看吧说不定能让你少走很多弯路图码-数据结构与算法交互式可视化平台访问网站https://totuma.cn方法二二分搜索最优解既然数组是已排序的我们可以利用二分搜索来加速。核心思想是找到目标值的第一次出现位置下界找到第一个大于目标值的位置上界两者之差就是目标值的出现次数代码实现Python使用内置函数frombisectimportbisect_left,bisect_rightdefcountFreq(arr,target):lbisect_left(arr,target)rbisect_right(arr,target)returnr-l arr[1,2,2,2,2,3,4,7,8,8]target2print(countFreq(arr,target))# 输出 4手动实现二分搜索C 风格#includeiostream#includevector#includealgorithmusingnamespacestd;intcountFreq(vectorintarr,inttarget){intllower_bound(arr.begin(),arr.end(),target)-arr.begin();intrupper_bound(arr.begin(),arr.end(),target)-arr.begin();returnr-l;}intmain(){vectorintarr{1,2,2,2,2,3,4,7,8,8};inttarget2;coutcountFreq(arr,target);// 输出 4return0;}复杂度分析时间复杂度O(log n)两次二分搜索每次 O(log n)。空间复杂度O(1)。为什么二分搜索更快线性搜索需要遍历整个数组当数组有 10 万个元素时最坏情况要比较 10 万次。而二分搜索每次将搜索范围减半只需比较约 log₂(100000) ≈ 17 次。总结方法时间复杂度空间复杂度适用场景线性搜索O(n)O(1)小数组或未排序数组二分搜索O(log n)O(1)已排序的大数组如果数组是已排序的强烈推荐使用二分搜索效率高且实现简单。如果数组未排序可以先排序再二分但排序本身需要 O(n log n) 时间此时线性搜索可能更合适。希望这篇文章对你有帮助如果你有其他解法或问题欢迎在评论区讨论
http://www.rkmt.cn/news/1380072.html

相关文章:

  • 如何快速配置虚拟显示器:面向初学者的完整指南
  • 当卫星在天上“读懂”人间:ICLR 2025 论文深度解读师玉娇、昃向辉的CS2S
  • 南京黄金回收探店vlog:5家门店称重、验金、结算全过程实拍 - 奢侈品回收测评
  • 2026支付宝立减金回收指南:正规渠道选择与最全避坑要点 - 可可收公众号
  • 2026浙江AI搜索优化服务商权威深度避坑指南与选型评测 - 品牌报告
  • 深度学习在银屑病图像分类中的应用与优化
  • Unity低延迟全景流渲染实战:RTSP/RTMP 360°视频优化指南
  • 2026大连黄金回收行情解析|实测靠谱回收门店榜单推荐 - 合扬奢侈品交易中心
  • 2026郑州名包回收测评,添价收名包回收权威鉴定认可度高 - 薛定谔的梨花猫
  • 8051位寻址机制与A17错误解决方案
  • GEO 赛道全景测评:搜极星凭 9.8 分登顶,重构 AI 时代品牌监测新标准
  • 无声输入革命:如何用Chaplin在5分钟内构建本地唇语识别系统
  • 2026年成都电缆桥架与抗震支架一站式解决方案深度选型指南 - 优质企业观察收录
  • 2026Q2桂林手机维修Top5实测排行,广西桂林修手机去哪家? - 博客万
  • 2026 长沙名表变现价格,资质,服务哪家强?合扬本地老店更放心 - 合扬奢侈品交易中心
  • 国内线材自动化设备靠谱厂商排行:全维度实测对比 - 互联网科技品牌测评
  • D3KeyHelper终极指南:5分钟掌握暗黑3最强自动化工具
  • 抢抓雄安新区建设机遇 全屋定制赋能未来之城宜居品质升级 - 新闻快传
  • PentestGPT:面向红队实战的本地化渗透AI工作流
  • GPU注意力算子优化:从原理到工程实践
  • 2026快消品行业GEO优化公司哪家好?靠谱服务商与平台推荐 - 博客万
  • 让B站缓存视频重获自由:一个简单实用的格式转换工具
  • MT-R1-Zero:基于强化学习的机器翻译范式革新与实战指南
  • 企业级AI渗透测试环境搭建实战:Strix平台四步部署指南
  • 哇塞!原来论文还能这样拿高分?2026降AI率工具推荐合集
  • 加油卡如何回收更省心?回收平台推荐! - 团团收购物卡回收
  • InVideo实战指南:在Unreal Engine中实现专业级视频播放与录制
  • Selenium搞不定的文件上传弹窗?试试Playwright的`page.expect_file_chooser()`监听大法
  • Godot .pck文件解析原理与实战解包指南
  • 3步解锁MacBook Touch Bar在Windows系统的完整功能:你的触控条终于活了!