因为题目数组有范围1 ≤ a[i] ≤ n

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

就是说,这个数组,如果数字是全的话,应该可以表示为

[1,2,3,4,5,6..........,N]

有重复的数字,就是说一些位置上的数字被其他数字占了,那么把它回复原样,在看一下那些位置上的数字不对就行了。

一个数字应该在的index,是数字-1,比如1放在index0那。

一开始的想法是,从index0开始遍历,遇到和index不同的,就放到他应该在的位置 。

然后取出那个位置上的数字,继续放到它应该在的位置上,一直继续。知道这一轮数字都在他们应该在的位置了。

继续迭代index。

这样有个问题,好像有两个循环了。

改进的方法。

当然位置的数字,和他应该在的位置上的数字进行交换,index不变。

这样最外层的循环就会完成这个迭代了。

这种做法,竟然莫名其妙是对的!太强了!

就算一开始有些位置没有放到正确的数字,但是最后都会被换回去。

因为index到每个,位置,那个位置上的数字,都会被放到正确的位置。

var findDisappearedNumbers = function(nums) {let index = 0;while(index<nums.length){let temp = nums[index];// 如果这个数字在他对应的数字上if(temp == nums[temp-1]){//进行下一个位置的判断index++;}else{//es6的交换[nums[index],nums[temp-1]] = [nums[temp-1],nums[index]]}}let arr = [];//检查位置不对的数字for(let i=0;i<nums.length;i++){if(i != nums[i]-1){//数字是位置+1arr.push(i+1);}}return arr;};

转载于:https://www.cnblogs.com/weizhibin1996/p/9775663.html

LeetCode448-找到所有数组中消失的数字(原地数组)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. Leetcode--448. 找到所有数组中消失的数字

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

  7. 找到所有数组中消失的数字—leetcode448

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

  8. leetcode448. 找到所有数组中消失的数字 天秀记录法

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

  9. ★LeetCode(448)——找到所有数组中消失的数字(JavaScript)

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

最新文章

  1. java 对象怎么序列化,java对象序列化总结
  2. escape相关方法使用
  3. Android 开机自动启动服务
  4. python 使用jinjia2 生成文件的空格处理
  5. IndexError: list index out of range image_name=self.images_name[index]
  6. flutter android 和 ios 发布
  7. 编程十年 (3):初识计算机
  8. 我所认识的EXT2(二)
  9. HP 滤波 (Hodrick Prescott Filter)
  10. 一种基于linux系统的精准流量统计方法
  11. 玩家密无忧 v7.0.7 绿色
  12. 实例讲解EasyLanguage入门
  13. 浙大计算机系学霸,浙大学霸将脑电波控制变现实
  14. 数据结构之三元组的实现
  15. linux命令删除raid,甲秀之音-Linux环境下删除硬盘中残留的raid信息
  16. 【分享】光纤光缆PPT
  17. 前端攻城狮的自我修养1
  18. 什么是函数式编程?总结
  19. spring配置方式:
  20. 微信小程序项目实战:电影购票系统-李宁-专题视频课程

热门文章

  1. 大型K8s沙龙来啦,火速报名——Kubernetes Cloud Native Meetup
  2. Android学习随笔 -- draw9patch的使用
  3. c语言 -1%4,**************
  4. SpringCloud 从菜鸟到大牛之五 统一配置中心 Spring Cloud Config
  5. golang goroutine协程运行机制及使用详解
  6. python--爬虫01
  7. mysql 的 sql_mode.only_full_group_by属性解析
  8. 计算机应用基础山东大学,山东大学计算机应用基础
  9. RocketMQ在Windows环境下部署(亲测有效)
  10. 一文理解设计模式之--观察者模式(Observer)