给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。

找到所有在 [1, n] 范围之间没有出现在数组中的数字。

您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。

示例:

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

输出:
[5,6]

思路:

归位法,将各数字放于他应有的次序,之后遍历数组,每个位置上的数字与原本应有的数字不对应,即数字i+1不存在

例如:2 3  5  1  2

第一次遍历:2应该放在第二个位置,-> 3 2 5 1 2

还在i=0位置处,发现3也不在应该的位置  -> 5  2  3  1  2

哎?5也不在   ->2  2  3  1  5

虽然第一个2不应该放在i=0处,但i=1处已经有2,所以不交换,进行第二次遍历

第二次遍历:第二个2已经归位

第三次遍历:3已经归位

第四次遍历:1不在本来的位置  ->1  2  3  2  5

第五次遍历:5已经归位

之后遍历数组,发现i=3处本来应该是4,现在没有,4就是消失的数字

提交的代码:

class Solution {

public List<Integer> findDisappearedNumbers(int[] nums) {

List<Integer> list = new ArrayList<Integer>();

for(int i=0;i<nums.length;i++)

{

while(nums[i]!=nums[nums[i]-1])  //不可写为if,因为交换之后,i处可能还不是本来应该有的数字,具体看上面的例子

{

int t = nums[nums[i]-1];

nums[nums[i]-1] = nums[i];

nums[i] = t;

}

}

for(int i=0;i<nums.length;i++)

{

if(nums[i]!=(i+1))

{

list.add(i+1);

}

}

return list;

}

}

Leetcode--448. 找到所有数组中消失的数字相关推荐

  1. leetcode - 448. 找到所有数组中消失的数字

    给定一个范围在 1≤a[i]≤n1 ≤ a[i] ≤ n1≤a[i]≤n ( n=n =n= 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1,n][1, ...

  2. LeetCode 448.找到所有数组中消失的数字

    目录 1.题目 2.代码及思路 3.进阶 3.1题目 3.2代码及思路 1.题目 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] ...

  3. leetcode 448. 找到所有数组中消失的数字(Java版)

    题目 https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/ 思路 维护一个 bool 数组,用来记录哪些 ...

  4. leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)

    文章目录 前言 697 程序 思路 收获 map容器 448 程序 收获 取模操作的思考 auto 前言 大佬的程序,边刷边总结边学语言. 题目697 697 程序 class Solution {p ...

  5. leetcode 448. Find All Numbers Disappeared in an Array | 448. 找到所有数组中消失的数字(原地,位运算)

    题目 https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/ 题解 遍历数组,将数组中每个数字 n 作为下标,将 ...

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

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

  7. LeetCode-----算法448.找到所有数组中消失的数字

    题目: 给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. ...

  8. 找到所有数组中消失的数字_【一点资讯】千万程序员的呼声:面试如何拿到大厂Offer?这份阅读量超过11W+的算法刷题宝典请你原地查收 www.yidianzixun.com...

    如何才能通过面试拿到大厂Offer? "刷leetcode!" 这是我听到最多的回答! 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是面测试.算 ...

  9. 《LeetCode力扣练习》第448题 找到所有数组中消失的数字 Java

    <LeetCode力扣练习>第448题 找到所有数组中消失的数字 Java 一.资源 题目: 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你 ...

  10. 2021-12-19:找到所有数组中消失的数字。 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums

    2021-12-19:找到所有数组中消失的数字. 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] 范围内但没有出现在 nums ...

最新文章

  1. MILA研究院唐建:基于图神经网络的关系推理(附视频)
  2. redux 入门到实践
  3. 访问者模式讨论篇:java的动态绑定与双分派
  4. 八大排序算法(理论和动态图)
  5. mysql 生明变量_MySql中的变量定义
  6. 计算机实物知识需求市场调研,能力本位计算机维护论文
  7. 用Java的Set实现交并差等集合运算
  8. 昂着头的艺术-伯爵在城堡的日记
  9. 灰度内测是什么意思?
  10. java 字符串倍_java字符串拼接与性能分析详解
  11. C# 判断一个字符串是否为url
  12. Jekyll本地搭建开发环境以及Github部署流程
  13. Microsoft Deployment Toolkit 2010 新功能实战之三
  14. docker安装jdk8
  15. CAD地形图等高线标高批量取整工具,解决等高线标高出现小数的问题,等高线高程批量取整,在指定限差内将等高线标高修改为最接近的整数
  16. SpringBoot项目对接短信平台Demo
  17. Mac安装homebrew,postman,charles,switchhost
  18. 自动驾驶技术基础——GNSS
  19. rails gem devise
  20. html5 video首次观看禁止快进,Video Speed Controller - 快进/后退/回看在线视频

热门文章

  1. 剑指Offer - 面试题66. 构建乘积数组(正反遍历)
  2. LeetCode 103. 二叉树的锯齿形层次遍历(BFS / 双栈)
  3. LeetCode 657. 机器人能否返回原点
  4. java webservice 服务器_java如何写webservice服务端
  5. Cygwin中如何像在Ubuntu中一样安装软件
  6. django简介及环境搭建
  7. python中的列表和元组_百度资讯搜索_python中的列表和元组
  8. 论文浅尝 | 通过多原型实体指称向量关联文本和实体
  9. NLP事件抽取综述(上中下):中文事件抽取、开放域事件抽取、事件数据生成、跨语言事件抽取、小样本事件抽取、零样本事件抽取等类型
  10. 文献阅读6-Entity-Relation Extraction as Multi-turn Question Answering(实体关系联合抽取,层次标签依赖关系,multi-turn QA)