[LeetCode] 442. 数组中重复的数据

题目链接: https://leetcode-cn.com/problems/find-all-duplicates-in-an-array

难度:中等

通过率:61.5%

题目描述:

给定一个整数数组 a,其中1 ≤ a[i] ≤ nn 为数组长度), 其中有些元素出现 两次 而其他元素出现 一次

找到所有出现 两次 的元素。

你可以不用到任何额外空间并在O( n )时间复杂度内解决这个问题吗?

示例:

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

思路:

思路一:排序

通过索引号排序,比如数字4放到索引3的位置,最后找排序后数组,与索引号没有相差1便是重复元素

思路二:绝对值

借用索引号,因为是在1~n之间,那么我们可以用索引0表示数字1,索引1表示数字2...,当有个数字num,我们将num - 1的位置的数字取相反数,连续两次取相反数会变回来,便可判断元素出现次数。

所以时间复杂度为$O(n)$

相似题型:448. 找到所有数组中消失的数字

代码:

思路一:

class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:res = []for i in range(len(nums)):while nums[nums[i] - 1] != nums[i]:tmp = nums[i]# 注意要保持这个位置loc = nums[i] - 1nums[i] = nums[nums[i] - 1]nums[loc] = tmpfor idx, val in enumerate(nums, 1):if val != idx:res.append(val)return res

思路二:

class Solution:def findDuplicates(self, nums: List[int]) -> List[int]:res = []for i in range(len(nums)):loc = abs(nums[i]) - 1if nums[loc] < 0:res.append(loc + 1)nums[loc] = -nums[loc]return res

angularjs 元素重复指定次数_[LeetCode] 442. 数组中重复的数据相关推荐

  1. python去重复排序_Python实现删除排序数组中重复项的两种方法示例

    本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...

  2. java如何找重复数字_Java如何找出数组中重复的数字

    题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...

  3. vector删除第i个元素_[LeetCode] 215. 数组中的第K个最大元素

    题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) 题目描述: 在未排序的数组中找到第 k 个最大的元素.请 ...

  4. 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]

    文章目录 题目描述-448 一.哈希Map 二.空间复杂度的优化--鸽笼原理 三.总结 题目描述-442 一.还是hashMap 二.继续鸽笼原理 题目描述-41 一.基础方案 二.数组模拟Map 题 ...

  5. leetcode 442. Find All Duplicates in an Array | 442. 数组中重复的数据(位运算)

    题目 https://leetcode.com/problems/find-all-duplicates-in-an-array/ 题解 没想出来,看了评论之后写的,一语点醒. 思路就是,用num对应 ...

  6. <力扣刷题>442. 数组中重复的数据

    前言 人生如逆旅,我亦是行人.----苏轼<临江仙·送钱穆父> 题: 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 ...

  7. 442. 数组中重复的数据

    给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次. 找到所有出现两次的元素. 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题 ...

  8. c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  9. java从数组查找指定整数_如何在Java中使用重复项查找整数数组中的K个缺失数字?...

    java从数组查找指定整数 自从我讨论任何编码或算法面试问题以来已经有很长时间了,因此我想重新考虑一种最流行的基于数组的编码问题,即在给定数组中查找缺失的数字. 在进行编程工作面试之前,您可能已经听说 ...

最新文章

  1. Tcpdump命令的使用与示例——linux下的网络分析
  2. Ubuntu创建opencv工程并显示一张图片
  3. C#实现微信AES-128-CBC加密数据的解密
  4. linux安装vi 插件,Ubuntu上Vim安装NERDTree插件的详细操作步骤
  5. Electron 实战桌面计算器应用
  6. ipsec ***概念(一)
  7. 【算法导论】学习笔记——第16章 贪心算法
  8. 淘淘商城之技术选型、开发工具和环境、人员配置
  9. JDK源码(11)-Long、Short
  10. char型变量能不能存储一个中文汉字重写和重载的规则
  11. 移植qt常见错误修改方法
  12. sscanf函数用法详解_「MOS考点详解」一道例题详解GETPIVOTDATA函数的用法
  13. CCSpriteBatchNode(附:CCMenu与CCSpriteBatchNode的问题)
  14. nodePPT初认识启动与手机控制
  15. mplayer命令行模式下的使用方法
  16. Windows 10 Install SQL Server 2005
  17. tomcat 环境迁移至weblogic 下载文件失败
  18. MySQL 重置密码
  19. Sails基础之Models层的config/datastores配置
  20. android通知详解

热门文章

  1. win 10 java 安装_win10---Java安装及环境变量配置
  2. php laravel 返回统一格式,封装的统一的Laravel响应类,返回数据类
  3. Angular之jwt令牌身份验证
  4. iOS VIPER架构(三)
  5. Java并发-ThreadLocal
  6. MySQL初识-架构-安装-初始化-连接-管理工具-数据文件
  7. 利用python进行数据分析D2——ch03IPython
  8. 图说 mysql 事务隔离级别
  9. Activity和Service交互
  10. 带你走近AngularJS - 基本功能介绍