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

LeetCode442 数组中重复的数据|原地哈希空间优化算法C++深度题解

大家好今日完成中等难度数组算法刷题攻克面试高频空间限制难题。本题核心考点严格限制O(n)时间复杂度、只能常数额外空间不能新开哈希表力扣经典数组思维题。题目题意长度为n的数组数字范围全部在 [1,n] 之间每个数字最多出现2次找出所有出现2次的数字。硬性要求不能使用map、set等额外哈希容器只能原地修改数组完成求解。核心原地哈希算法思路利用题目数字特性数组长度n、数值范围1~n数字 x 天然可以对应数组下标 x-1 用原数组自身做哈希表完全不占用额外空间。1. 遍历每一个数字取出绝对值得到当前数值 x2. 找到对应映射下标 index x-13. 判断下标位置数字正负- 数字为负数代表这个下标对应的数字之前已经出现过当前数字就是重复答案- 数字为正数把下标位置数字取反变负数做出现标记4. 全程只遍历一遍数组时间O(n)空间只有答案数组完全符合题目常数空间要求样例原理讲解输入 [4,3,2,7,8,2,3,1]数字4 → 下标3把nums[3]取反数字3 → 下标2把nums[2]取反遍历到数字2时对应下标1位置已经是负数证明2重复加入答案遍历到数字3时对应下标2位置已经是负数证明3重复加入答案最终输出 [2,3] 和样例完全匹配C完整AC可运行代码class Solution {public:vectorint findDuplicates(vectorint nums) {vectorint res;// 原地数组哈希数值nums[i]对应下标nums[i]-1for(int i0;inums.size();i){int idx abs(nums[i]) - 1;// 位置已经被标记过说明当前数字重复if(nums[idx] 0){res.push_back(abs(nums[i]));}// 取反标记代表数字已经出现过一次nums[idx] -nums[idx];}return res;}};算法考点总结原地数组哈希是数组面试王牌解法专门解决数值范围和数组长度匹配的查找、重复问题。不用额外哈希容器原地修改正负标记出现次数是字节、华为、腾讯高频笔试原题吃透数组下标映射思维区间查找题型全部通用。

相关文章:

LeetCode442 数组中重复的数据|原地哈希空间优化算法C++深度题解

大家好,今日完成中等难度数组算法刷题,攻克面试高频空间限制难题。 本题核心考点:严格限制O(n)时间复杂度、只能常数额外空间,不能新开哈希表,力扣经典数组思维题。题目题意长度为n的数组,数字范围全部在 […...

Worlds End Club for Mac 软件详解与操作指南

本文来源:爱上MAC | 软件下载地址:Worlds End Club for Mac Worlds End Club 是一款在Mac平台上运行的叙事驱动型横向卷轴动作冒险游戏。它巧妙融合了视觉小说式的剧情叙述与平台跳跃、解谜及轻度战斗元素。本指南将详细介绍其软件界面、完整操作流程…...

算法训练营第五天| 203. 移除链表元素

题目建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。题目链接:https://leetcode.cn/problems/remove-linked-list-elements/视频讲解:https://www.bilibili.com/video/BV18B4y1s7R9解题思路:1.…...

JavaScript 中高效定位二维数组间差异元素的行列索引

...

从理论到实践:伺服三环控制的参数整定与Simulink仿真指南

1. 伺服三环控制的核心原理 伺服系统的三环控制结构就像洋葱一样层层嵌套,最内层是电流环,中间是速度环,最外层是位置环。这种分层设计让每个环节都能专注于自己的控制目标,内环为外环提供支撑。我调试过几十台不同品牌的伺服系统…...

STM32H750项目实战:如何把DMA数据精准丢进512KB高速SRAM(Keil MDK配置详解)

STM32H750项目实战:如何把DMA数据精准丢进512KB高速SRAM(Keil MDK配置详解) 在嵌入式开发中,性能优化往往是一场与硬件限制的博弈。当你在STM32H750上实现了一个功能完备的ADC采样系统,却发现DMA传输的数据总是莫名其妙…...

基于认知负荷理论的职场新人算法学习策略:如何循序渐进,避免挫败感。

很多职场新人学算法,卡住的原因并不只是“自己不够聪明”。更常见的情况是:一上来就刷难题、追求速成、同时学太多概念,结果大脑像浏览器开了二十个标签页,越学越乱 😵‍💫从认知负荷理论看,这种…...

别再死记硬背了!一张图帮你搞定C语言fopen所有打开模式(附Windows/Linux差异)

C语言文件操作实战指南:fopen模式全解析与跨平台避坑技巧 每次写C语言文件操作代码时,是不是总要翻文档查fopen的打开模式?r和w到底有什么区别?为什么在Windows和Linux上运行结果不一样?作为从学生时代就被文件操作坑过…...

FanControl终极指南:5分钟搞定Windows风扇智能控制,告别噪音烦恼[特殊字符]

FanControl终极指南:5分钟搞定Windows风扇智能控制,告别噪音烦恼🔥 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: http…...

零基础上手DeepSeek-OCR-2:本地智能OCR工具保姆级部署教程

零基础上手DeepSeek-OCR-2:本地智能OCR工具保姆级部署教程 1. 工具简介与核心价值 DeepSeek-OCR-2是一款基于深度学习的本地智能OCR工具,它能将各类文档图片中的内容精准提取并转换为标准Markdown格式。与普通OCR工具只能提取纯文本不同,它…...

Abaqus Cohesive单元疲劳损伤的UMAT实现与工程验证

1. 理解Cohesive单元与疲劳损伤的基础概念 我第一次接触Cohesive单元是在分析复合材料分层问题时。这种特殊的单元类型就像给材料内部装上了"微型传感器",能够精确捕捉界面处的力学行为。与传统的连续体单元不同,Cohesive单元通过牵引-分离法则…...

千问3.5-9B Visual Studio Code高效插件配置与AI编程工作流

千问3.5-9B Visual Studio Code高效插件配置与AI编程工作流 1. 为什么需要AI辅助编程工作流 现代软件开发面临诸多挑战:代码复杂度不断提升、技术更新迭代加快、文档维护成本居高不下。传统开发方式下,程序员需要花费大量时间在重复性工作上&#xff0…...

告别移植烦恼:手把手教你用NRF52832的ESB库直连NRF24L01模块(附完整代码)

NRF52832与NRF24L01无缝通信实战指南 1. 理解ESB协议栈的核心机制 NRF52832的增强型 ShockBurst (ESB) 协议栈是实现与NRF24L01兼容通信的关键。这套协议栈通过硬件加速和智能状态管理,为2.4GHz无线通信提供了高效的数据传输机制。 协议栈工作流程解析: …...

C语言完美演绎8-7

/* 范例&#xff1a;8-7 */#include <stdio.h>void arith(int); /* 函数arith()在本范例中&#xff0c;可以不必有原型声明 */void arith(int k) /* 传值方式 */{k;}/* 函数arith()在传递参数时&#xff0c;int k所执行的动作为 int k;k i;&#xff0c;也就是先…...

告别IO口焦虑:用74HC595驱动8x8点阵屏,51单片机也能玩转动态显示

告别IO口焦虑&#xff1a;用74HC595驱动8x8点阵屏&#xff0c;51单片机也能玩转动态显示 当你在面包板上搭建第一个流水灯时&#xff0c;74HC595可能只是让LED依次点亮的工具。但这款售价不到1元的芯片&#xff0c;其实藏着更强大的潜力——它能让你用51单片机的3个IO口&#x…...

AI简历生成器落地手册(SITS2026内部白皮书节选):如何绕过算法偏见、规避关键词稀释、锁定TOP 100企业JD匹配逻辑

第一章&#xff1a;AI简历生成器落地手册&#xff08;SITS2026内部白皮书节选&#xff09;&#xff1a;如何绕过算法偏见、规避关键词稀释、锁定TOP 100企业JD匹配逻辑 2026奇点智能技术大会(https://ml-summit.org) 识别并中和训练数据中的隐性偏见 AI简历生成器常因训练语料…...

基于动态规划的微电网动态经济调度研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

在RK3588开发板上,我是如何一步步搞定EtherCAT主站配置的(附完整打包与部署流程)

在RK3588开发板上构建EtherCAT主站的完整实战指南 当我在工业自动化项目中第一次接触RK3588开发板时&#xff0c;就被它强大的性能和丰富的接口所吸引。但真正让我兴奋的是&#xff0c;它能够通过EtherCAT协议实现高精度的运动控制。本文将分享我从零开始配置EtherCAT主站的完整…...

从开源项目OV-Watch V2.4入手,手把手教你用STM32F411CEU6打造自己的智能手环(附完整BOM清单与焊接避坑指南)

从开源项目OV-Watch V2.4入手&#xff0c;手把手教你用STM32F411CEU6打造自己的智能手环&#xff08;附完整BOM清单与焊接避坑指南&#xff09; 在当今可穿戴设备蓬勃发展的时代&#xff0c;智能手环因其便携性和实用性成为众多科技爱好者的心头好。但对于真正热衷硬件开发的极…...

STM32 基于DMP库实现MPU6050姿态解算与LCD显示

1. MPU6050与DMP库基础认知 第一次接触MPU6050时&#xff0c;我被这个火柴盒大小的传感器震撼到了——它内部集成了三轴陀螺仪和三轴加速度计&#xff0c;还能通过I2C接口扩展磁力计。但更让我惊喜的是它内置的DMP&#xff08;Digital Motion Processor&#xff09;数字运动处理…...

【Causality】从数据到因果图:算法如何发现隐藏的关联

1. 因果发现&#xff1a;从数据中挖掘隐藏的真相 想象一下你是一名医生&#xff0c;面对一群患有相同症状的病人。通过观察他们的病历数据&#xff0c;你发现喝咖啡的人往往血压更高。这是否意味着咖啡会导致高血压&#xff1f;还是说喝咖啡的人往往工作压力更大&#xff0c;而…...

RDMA不只是‘快’:深入聊聊它在Spark、MySQL等真实业务场景下的性能陷阱与优化实践

RDMA不只是‘快’&#xff1a;深入聊聊它在Spark、MySQL等真实业务场景下的性能陷阱与优化实践 当技术团队第一次接触RDMA&#xff08;远程直接内存访问&#xff09;时&#xff0c;往往会被其宣传的"零拷贝"、"低延迟"特性所吸引。然而在实际部署到Spark S…...

Qwen3.5-9B开发者案例:基于Gradio构建内部知识问答平台

Qwen3.5-9B开发者案例&#xff1a;基于Gradio构建内部知识问答平台 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。本案例将展示如何基于Gradio框架&#xff0c;快速搭建一个企业内部知识问答平台。 这…...

VMware vSAN 7 超融合架构实战:从策略定义到集群部署的效能跃迁

1. 为什么企业需要vSAN 7超融合架构&#xff1f; 最近几年我帮不少企业做过IT架构升级&#xff0c;发现一个共同痛点&#xff1a;业务量爆发式增长后&#xff0c;传统存储架构就像老牛拉破车。有家电商客户的黑五大促期间&#xff0c;SAN存储响应延迟直接飙到200ms以上&#xf…...

别再死记硬背‘神经元’和‘激活函数’了!用乐高积木和流程图,5分钟搞懂神经网络核心思想

用乐高积木和侦探故事拆解神经网络&#xff1a;零公式理解AI如何思考 想象一下&#xff0c;你正在教一个五岁小孩搭建城堡——你不会掏出微积分课本&#xff0c;而是递给他一盒乐高积木。理解神经网络的核心思想也是如此&#xff0c;我们完全可以用积木块、水管阀门和侦探破案的…...

从‘瑞士卷’到‘鸢尾花’:用Python可视化带你彻底搞懂层次聚类(AgglomerativeClustering)

从‘瑞士卷’到‘鸢尾花’&#xff1a;用Python可视化彻底理解层次聚类 当面对高维数据时&#xff0c;我们常常需要一种能够直观展示数据结构的方法。层次聚类&#xff08;Hierarchical Clustering&#xff09;不仅提供了数据的聚类结果&#xff0c;更重要的是通过树状图&#…...

Ostrakon-VL-8B实战落地:深夜食堂风格终端生成货架巡检报告

Ostrakon-VL-8B实战落地&#xff1a;深夜食堂风格终端生成货架巡检报告 1. 项目背景与核心价值 在零售和餐饮行业&#xff0c;货架巡检是一项耗时且容易出错的工作。传统方法需要人工逐一检查商品摆放、价签信息、库存状态等&#xff0c;不仅效率低下&#xff0c;还容易遗漏细…...

雷达工程师的日常:如何用FFT和概率密度分析搞定噪声与目标检测?

雷达信号处理实战&#xff1a;从噪声分析到目标检测的FFT与概率密度综合应用 雷达工程师每天面对的是淹没在噪声中的微弱信号&#xff0c;如何在复杂环境中准确识别目标&#xff1f;这背后离不开两大核心工具&#xff1a;快速傅里叶变换(FFT)和概率密度分析。本文将带你走进雷达…...

Simulink代码生成探秘:Selector模块的C代码‘翻译’逻辑与性能考量

Simulink代码生成探秘&#xff1a;Selector模块的C代码‘翻译’逻辑与性能考量 在嵌入式开发领域&#xff0c;Simulink的代码生成功能一直是工程师们关注的焦点。Selector模块作为Simulink中处理数组和矩阵数据提取的核心组件&#xff0c;其代码生成质量直接影响着嵌入式系统的…...

单片机实战解析:从时序到代码,手把手实现DS18B20温度采集

1. DS18B20温度传感器基础认知 第一次接触DS18B20时&#xff0c;我对着这个三根引脚的金属探头愣了半天——这么简单的结构真能实现高精度测温&#xff1f;后来在项目里实测发现&#xff0c;这款数字温度传感器不仅测量范围广&#xff08;-55C到125C&#xff09;&#xff0c;精…...