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

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

给定一个已排序的数组和一个目标值如何快速统计该目标值在数组中出现的次数这是面试中非常经典的一道题今天就来聊聊两种解法线性搜索和二分搜索。问题描述假设有一个已排序的数组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) 时间此时线性搜索可能更合适。希望这篇文章对你有帮助如果你有其他解法或问题欢迎在评论区讨论

相关文章:

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

给定一个已排序的数组和一个目标值,如何快速统计该目标值在数组中出现的次数?这是面试中非常经典的一道题,今天就来聊聊两种解法:线性搜索和二分搜索。 问题描述 假设有一个已排序的数组 arr[] 和一个整数 target,需…...

如何快速解锁加密音乐文件:3个简单步骤让音乐自由播放

如何快速解锁加密音乐文件:3个简单步骤让音乐自由播放 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https…...

如何快速配置虚拟显示器:面向初学者的完整指南

如何快速配置虚拟显示器:面向初学者的完整指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否在为游戏串流画质不佳而烦恼?或者需要为无显示器主机…...

ncmdumpGUI终极指南:3分钟搞定网易云音乐NCM文件转换

ncmdumpGUI终极指南:3分钟搞定网易云音乐NCM文件转换 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐的NCM加密格式而烦恼吗&…...

当卫星在天上“读懂”人间:ICLR 2025 论文深度解读师玉娇、昃向辉的CS2S

把一张卫星图变成一张街景照片,就像把一个俯视棋盘拼成一面看台——不仅要摆对每一枚棋子,还要看懂整场比赛想象这样一个场景:你在城市规划部门工作,需要快速生成某条街道在不同季节、不同天气条件下的真实渲染效果,以…...

告别硬编码!在UE5 GAS中实现动态技能键位绑定:从DataAsset配置到运行时热更新的完整流程

告别硬编码!在UE5 GAS中实现动态技能键位绑定:从DataAsset配置到运行时热更新的完整流程在当代RPG游戏开发中,技能系统的灵活性和可配置性往往决定了项目的迭代效率。传统硬编码的键位绑定方式不仅增加了程序与策划的沟通成本,更在…...

忆阻储层计算:预处理优化与硬件实现

1. 项目概述在当今人工智能快速发展的时代,神经形态计算正成为突破传统冯诺依曼架构瓶颈的重要方向。储层计算(Reservoir Computing,RC)作为一种特殊的循环神经网络架构,因其仅需训练输出层而显著降低了计算开销&#…...

无声输入革命:如何用Chaplin在5分钟内构建本地唇语识别系统

无声输入革命:如何用Chaplin在5分钟内构建本地唇语识别系统 【免费下载链接】chaplin A real-time silent speech recognition tool. 项目地址: https://gitcode.com/gh_mirrors/chapl/chaplin 在嘈杂的办公室、安静的图书馆,或是需要绝对隐私的医…...

对比直接调用厂商API使用Taotoken聚合调用的延迟体感差异

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接调用厂商API使用Taotoken聚合调用的延迟体感差异 在将应用从直接调用单一厂商的模型API迁移到Taotoken平台后,…...

基于Shapley值与随机森林的印度CPI通胀预测与特征重要性分析

1. 项目概述与核心价值在宏观经济预测领域,通胀预测的准确性直接关系到货币政策制定、市场预期管理乃至社会民生稳定。传统的计量经济学模型,如基于菲利普斯曲线的线性回归,虽然具有良好的可解释性,但在捕捉现实世界中复杂、非线性…...

AVR+ESP8266双核架构打造独立WiFi天气显示器:从硬件设计到软件实现

1. 项目概述:一个独立WiFi天气显示器的诞生几年前,我琢磨着在书桌上放一个能实时显示天气信息的小玩意儿,市面上成品要么功能单一,要么价格不菲,要么数据源依赖复杂的服务器。于是,我决定自己动手&#xff…...

D3KeyHelper终极指南:5分钟掌握暗黑3最强自动化工具

D3KeyHelper终极指南:5分钟掌握暗黑3最强自动化工具 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏神3…...

Charles弱网测试六维参数实战:从丢包率到DNS延迟的精准复现

1. 为什么弱网测试不能只靠“模拟3G”按钮点一下就完事做移动端或Web前端的同学,大概率都听过这句话:“上线前跑一遍Charles,切个2G网络测下加载。”——听起来很专业,实际一查日志,发现90%的团队连Charles的Throttlin…...

基于ATmega328P与TFT屏的园艺环境监控系统:硬件选型与软件架构详解

1. 项目概述:打造你的家庭园艺数据监控中心如果你和我一样,是个喜欢在阳台或后院捣鼓花草的园艺爱好者,同时又对电子DIY有点兴趣,那么这个项目绝对会让你兴奋。我们不是在简单地种花,而是在用数据“聆听”植物的需求。…...

浏览器端音频解密技术:如何让加密音乐在本地重获新生?

浏览器端音频解密技术:如何让加密音乐在本地重获新生? 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目…...

清华大学学位论文LaTeX模板:30分钟快速排版终极指南

清华大学学位论文LaTeX模板:30分钟快速排版终极指南 【免费下载链接】thuthesis LaTeX Thesis Template for Tsinghua University 项目地址: https://gitcode.com/gh_mirrors/th/thuthesis 还在为论文格式烦恼吗?清华大学官方LaTeX模板thuthesis让…...

让B站缓存视频重获自由:一个简单实用的格式转换工具

让B站缓存视频重获自由:一个简单实用的格式转换工具 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还记得那个周末的下午吗&#xf…...

模拟调音台数字化改造:基于STM32与MOTU音频接口的智能控制方案

1. 项目概述:为老旧模拟调音台注入数字灵魂在不少社区广播电台、校园电台或是小型制作室里,你依然能看到那些服役了十几年甚至几十年的模拟调音台。它们皮实耐用,推子手感扎实,旋钮的阻尼感让人安心,但面对如今以数字文…...

MT-R1-Zero:基于强化学习的机器翻译范式革新与实战指南

1. 项目概述:当强化学习遇上机器翻译 在机器翻译这个老牌的自然语言处理任务里,我们似乎已经习惯了“数据驱动”的剧本:收集海量的双语平行句对,用它们来监督训练模型,让模型学会从源语言到目标语言的映射。这套方法&a…...

终极Windows键盘重映射解决方案:SharpKeys完全指南

终极Windows键盘重映射解决方案:SharpKeys完全指南 【免费下载链接】sharpkeys SharpKeys is a utility that manages a Registry key that allows Windows to remap one key to any other key. 项目地址: https://gitcode.com/gh_mirrors/sh/sharpkeys 还在…...

3步精通WaveTools:鸣潮全场景性能优化终极指南

3步精通WaveTools:鸣潮全场景性能优化终极指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 开源优化工具WaveTools作为《鸣潮》玩家必备的性能调校助手,通过深度配置优化实现画质…...

完整解决方案:PL2303 Windows 10驱动快速安装指南

完整解决方案:PL2303 Windows 10驱动快速安装指南 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 如果你正在Windows 10系统上使用PL-2303HXA或PL-2303XA芯…...

【MATLAB】OFDM系统峰均比抑制算法仿真

【MATLAB】OFDM系统峰均比抑制算法仿真 摘要:OFDM(正交频分复用)技术凭借抗多径衰落、频谱利用率高、抗干扰能力强等优势,广泛应用于4G/5G移动通信、WiFi、数字广播电视等无线通信系统。但OFDM系统存在固有缺陷,多子载波叠加导致时域信号出现大幅峰值,产生较高峰值平均功…...

【独家首发】DeepSeek官方未公开的集成测试Checklist(含23项生产环境准入阈值与压测基线)

更多请点击: https://codechina.net 第一章:DeepSeek集成测试方案 DeepSeek模型的集成测试需覆盖推理服务稳定性、多模态输入兼容性、上下文长度边界及API协议一致性四大核心维度。测试环境基于Kubernetes集群部署,采用PrometheusGrafana监控…...

Unity动态植被系统:实时天气与自然现象耦合方案

1. 这不是“贴图堆砌”,而是一套可交互的自然系统你有没有试过在Unity里拖进几棵树、铺点草地,结果运行起来——风一吹,所有树叶像被钉在空中一样纹丝不动;下雨时,雨滴垂直砸进地面,连个水花都没有&#xf…...

DeepSeek注释质量跃迁路径(附12个真实项目对比数据+可复用Prompt模板)

更多请点击: https://codechina.net 第一章:DeepSeek注释质量跃迁路径(附12个真实项目对比数据可复用Prompt模板) 高质量代码注释不再是“锦上添花”,而是模型理解意图、团队高效协同与长期可维护性的核心基础设施。…...

VisualCppRedist AIO:Windows系统依赖问题终极解决方案,一键修复所有VC++运行库

VisualCppRedist AIO:Windows系统依赖问题终极解决方案,一键修复所有VC运行库 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经…...

BurpSuite+SqlMap深度集成:构建高可信SQL注入检测流水线

1. 这不是“点几下就出结果”的玩具,而是你真正能放进渗透流程里的SQL注入检测流水线很多人第一次看到“BurpSuiteSqlMap插件5分钟搞定SQL注入检测”这个标题,第一反应是:又一个标题党?点开全是截图堆砌、参数照抄、报错就卡住的半…...

LSTM、GRU与注意力机制在股票预测中的性能对比与实战指南

1. 项目概述与核心价值在量化金融和算法交易这个行当里,预测股票价格走势一直是个充满诱惑又极具挑战的“圣杯”问题。传统的技术分析和基本面分析,虽然各有拥趸,但在面对市场的高噪声、非线性和突发性事件时,往往显得力不从心。我…...

XZ9971,60V,5A,NMOS 封装:SOT223

封装&#xff1a;SOT223类型&#xff1a;NVDS&#xff1a;60V VGS&#xff1a; 20V ID&#xff1a;5ARDS(ON)&#xff1a;10V <50mΩRDS(ON)&#xff1a;4.5V <60mΩ型号&#xff1a; XZ9971 封装&#xff1a;SOT223类型&…...