news 2026/8/16 16:55:37

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

作者头像

张小明

前端开发工程师

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/8/4 3:30:44

FlashAI大语言模型终极部署指南:从零到精通的完整教程

FlashAI大语言模型终极部署指南&#xff1a;从零到精通的完整教程 【免费下载链接】通义千问 FlashAI一键本地部署通义千问大模型整合包 项目地址: https://ai.gitcode.com/FlashAI/qwen FlashAI作为一款革命性的本地大语言模型部署解决方案&#xff0c;彻底改变了传统A…

作者头像 李华
网站建设 2026/8/9 22:39:47

PaddlePaddle审计日志系统:操作记录全程可追溯

PaddlePaddle审计日志系统&#xff1a;操作记录全程可追溯 在金融、医疗和政务等高合规性要求的行业中&#xff0c;AI系统的每一次操作都必须“有据可查”。当一个模型突然性能下降&#xff0c;或者敏感数据被异常导出时&#xff0c;运维人员最需要的不是猜测&#xff0c;而是清…

作者头像 李华
网站建设 2026/7/31 9:40:43

PaddlePaddle超参数自动搜索:Grid Search与Bayesian优化

PaddlePaddle超参数自动搜索&#xff1a;从暴力穷举到智能逼近 在深度学习的世界里&#xff0c;调参曾是每个工程师都绕不开的“玄学”。一个模型训练效果不佳&#xff0c;到底是结构问题&#xff1f;数据问题&#xff1f;还是那个看似不起眼的学习率设得不对&#xff1f;过去&…

作者头像 李华
网站建设 2026/8/15 11:48:11

学业预警系统答辩

1、采用的技术与其他技术的比较采用的技术&#xff1a;后端技术&#xff1a;Spring BootSpring Boot 是一个基于 Spring 框架的开源项目&#xff0c;它简化了基于 Spring 的应用程序的开发和部署。Spring Boot 通过提供默认配置、内嵌的 Servlet 容器&#xff08;如 Tomcat&…

作者头像 李华
网站建设 2026/8/15 15:02:17

kernel(module) io interface

如上图所示&#xff0c;*sum是input还是output&#xff0c;取决于其为左值还是右值&#xff0c;如果是右值&#xff0c;就是input&#xff0c;如果是左值就是ouput&#xff0c;如果两者都有&#xff0c;那么既有input&#xff0c;也有ouput接口。 return会产生一个ap_return的…

作者头像 李华
网站建设 2026/8/16 9:49:49

重温经典:Windows XP SP3终极纯净版镜像完整指南

重温经典&#xff1a;Windows XP SP3终极纯净版镜像完整指南 【免费下载链接】WindowsXPProfessionalSP3ISO镜像下载分享 本仓库提供了一个Windows XP Professional with Service Pack 3 (SP3)的ISO镜像文件下载。该镜像文件是官方原版&#xff0c;适用于32位系统&#xff0c;包…

作者头像 李华