news 2026/4/17 19:32:23

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

作者头像

张小明

前端开发工程师

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/4/18 9:41:24

BGE-M3终极部署指南:从零到一的快速推理加速实战

BGE-M3终极部署指南&#xff1a;从零到一的快速推理加速实战 【免费下载链接】bge-m3 BGE-M3&#xff0c;一款全能型多语言嵌入模型&#xff0c;具备三大检索功能&#xff1a;稠密检索、稀疏检索和多元向量检索&#xff0c;覆盖超百种语言&#xff0c;可处理不同粒度输入&#…

作者头像 李华
网站建设 2026/4/18 11:32:01

epub.js:如何在浏览器中实现专业级电子书渲染体验?

你是否曾经想过&#xff0c;为什么有些电子书在浏览器中显示效果不佳&#xff0c;排版混乱&#xff0c;阅读体验差&#xff1f;epub.js正是解决这一痛点的强大工具。作为一款专业的电子书渲染库&#xff0c;epub.js能够在浏览器中提供媲美原生应用的阅读体验&#xff0c;让电子…

作者头像 李华
网站建设 2026/4/17 13:42:48

PaddlePaddle MOT多目标跟踪:SORT与DeepSORT对比

PaddlePaddle MOT多目标跟踪&#xff1a;SORT与DeepSORT对比 在城市交通监控中心的大屏上&#xff0c;数十辆汽车正穿梭于交叉路口的实时画面中。系统不仅需要准确识别每一辆车的位置&#xff0c;更要确保它们在整个视频序列中拥有稳定的ID——即便被公交车短暂遮挡、或在弯道后…

作者头像 李华
网站建设 2026/4/18 3:52:19

如何快速配置东风破plum:新手完整安装指南

如何快速配置东风破plum&#xff1a;新手完整安装指南 【免费下载链接】plum 東風破 /plum/: Rime configuration manager and input schema repository 项目地址: https://gitcode.com/gh_mirrors/pl/plum 想要体验极致的中文输入体验吗&#xff1f;东风破plum作为Rime…

作者头像 李华
网站建设 2026/4/18 3:52:15

学校机房上机排课管理系统的设计与实现开题报告

姓名: xx 学 号: xx 专业&#xff1a; 计算机科学与技术一班 所在院系&#xff1a; 计算机与信息工程学院 毕业设计(论文)题目&#xff1a;学校机房上机排课管理系统的设计与实现一、研究的背景和意义随着信息技术的迅猛发展&#xff0c…

作者头像 李华
网站建设 2026/4/18 3:52:17

koboldcpp终极指南:3步实现AI模型本地化部署的完整教程

koboldcpp终极指南&#xff1a;3步实现AI模型本地化部署的完整教程 【免费下载链接】koboldcpp A simple one-file way to run various GGML and GGUF models with KoboldAIs UI 项目地址: https://gitcode.com/gh_mirrors/ko/koboldcpp 还在为复杂的AI模型部署流程而烦…

作者头像 李华