news 2026/6/10 15:04:01

力扣刷题:数组中重复的数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣刷题:数组中重复的数据

题目:
给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 最多两次 。请你找出所有出现 两次 的整数,并以数组形式返回。

你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间(不包括存储输出所需的空间)的算法解决此问题。

示例 1:

输入:nums = [4,3,2,7,8,2,3,1]
输出:[2,3]

示例 2:

输入:nums = [1,1,2]
输出:[1]

示例 3:

输入:nums = [1]
输出:[]

解析:
这道题的思想是原地哈希,因为题目中比较特殊,数组中每一个数的值是在[1,n]这个区间中,数组的长度也刚好为n,所以我们可以借助数组中某个数的前一个索引表示这个数是否出现过,如果没出现过,就将这个数减一作为下标对应的元素设置为负数。
举个例子:
比如数组有个元素为4,那么我们将arr[4-1]对应的那个元素乘以-1,变为负数,那么下次我们再次遇到4这个数的时候,我们去查看arr[4-1]对应的元素,如果对应的元素为负数,那么说明元素4之前出现过一次

具体代码:

/** * 找出数组中所有出现两次的元素(LeetCode 442题) * 条件:1 ≤ nums[i] ≤ n,n为数组长度,每个元素最多出现两次 * @param {number[]} nums - 输入数组,元素值在[1, n]范围内 * @return {number[]} - 返回所有出现两次的元素 */varfindDuplicates=function(nums){// 存储结果的数组letres=[]// 遍历数组中的每个元素for(leti=0;i<nums.length;i++){// 取当前元素的绝对值(因为可能已经被标记为负数)letk=Math.abs(nums[i])// 检查 nums[k-1] 这个位置的值:// - 如果 nums[k-1] > 0:说明数字 k 是第一次出现// - 如果 nums[k-1] < 0:说明数字 k 之前已经出现过一次,现在是第二次出现// 核心思路:用索引 (k-1) 位置的符号来标记数字 k 是否出现过if(nums[k-1]>0){// 第一次遇到数字 k:将 nums[k-1] 标记为负数// 负号作为"已访问"标记,不影响我们通过 Math.abs 获取原始值nums[k-1]*=-1}else{// 第二次遇到数字 k:当前 nums[k-1] 已经是负数// 说明 k 是重复元素,将其加入结果数组res.push(k)}}// 返回所有出现两次的元素returnres};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:21:33

WebOS Homebrew Channel完整安装指南:释放智能电视隐藏功能

WebOS Homebrew Channel完整安装指南&#xff1a;释放智能电视隐藏功能 【免费下载链接】webos-homebrew-channel Unofficial webOS TV homebrew store and root-related tooling 项目地址: https://gitcode.com/gh_mirrors/we/webos-homebrew-channel 你是否觉得LG Web…

作者头像 李华
网站建设 2026/6/10 12:42:04

BMAD-METHOD:零基础搭建多语言开发环境的完整指南

还在为跨国协作的语言障碍头疼吗&#xff1f;BMAD-METHOD框架帮你轻松搞定多语言开发&#xff0c;让团队沟通效率提升50%&#xff01;无论你是独立开发者还是跨国团队&#xff0c;这套方法都能让你快速上手。 【免费下载链接】BMAD-METHOD Breakthrough Method for Agile Ai Dr…

作者头像 李华
网站建设 2026/6/10 12:36:44

数字签名验证:保障TensorFlow组件来源可信

数字签名验证&#xff1a;保障TensorFlow组件来源可信 在金融、医疗和工业AI系统日益普及的今天&#xff0c;一个看似不起眼的软件包可能成为整个系统的安全突破口。想象一下&#xff1a;某银行的风控模型突然开始做出异常预测&#xff0c;排查后发现并非算法问题&#xff0c;…

作者头像 李华
网站建设 2026/6/10 19:16:43

JSON Hero主题系统深度解析:打造个性化JSON可视化工作台

JSON Hero主题系统深度解析&#xff1a;打造个性化JSON可视化工作台 【免费下载链接】jsonhero-web 项目地址: https://gitcode.com/gh_mirrors/jso/jsonhero-web 作为一名开发者&#xff0c;你是否曾经被单调的JSON查看界面所困扰&#xff1f;面对海量数据时&#xff…

作者头像 李华
网站建设 2026/6/10 14:48:04

Arjun实战解析:5分钟掌握Web隐藏参数检测核心技术

Web应用安全测试中&#xff0c;Arjun参数发现工具已成为安全工程师必备的利器。这款高效的HTTP参数检测套件能够在极短时间内扫描数万个参数名称&#xff0c;帮助开发者快速发现潜在的安全漏洞。&#x1f680; 【免费下载链接】Arjun HTTP parameter discovery suite. 项目地…

作者头像 李华
网站建设 2026/6/10 7:10:25

企业级AI基础设施建设:以TensorFlow为核心的架构设计

企业级AI基础设施建设&#xff1a;以TensorFlow为核心的架构设计 在金融风控系统需要毫秒级响应、智能制造产线依赖实时缺陷检测、电商平台每秒处理数万次推荐请求的今天&#xff0c;AI早已不再是实验室里的“炫技工具”。它正作为核心生产力&#xff0c;深度嵌入企业的业务流程…

作者头像 李华