Leetcode--448. 找到所有数组中消失的数字
给定一个范围在 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. 找到所有数组中消失的数字相关推荐
- leetcode - 448. 找到所有数组中消失的数字
给定一个范围在 1≤a[i]≤n1 ≤ a[i] ≤ n1≤a[i]≤n ( n=n =n= 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1,n][1, ...
- LeetCode 448.找到所有数组中消失的数字
目录 1.题目 2.代码及思路 3.进阶 3.1题目 3.2代码及思路 1.题目 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] ...
- leetcode 448. 找到所有数组中消失的数字(Java版)
题目 https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/ 思路 维护一个 bool 数组,用来记录哪些 ...
- leetcode(3)——697. 数组的度(C++版本注释)(map容器),448. 找到所有数组中消失的数字(取余操作,C++中的auto类型)
文章目录 前言 697 程序 思路 收获 map容器 448 程序 收获 取模操作的思考 auto 前言 大佬的程序,边刷边总结边学语言. 题目697 697 程序 class Solution {p ...
- leetcode 448. Find All Numbers Disappeared in an Array | 448. 找到所有数组中消失的数字(原地,位运算)
题目 https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/ 题解 遍历数组,将数组中每个数字 n 作为下标,将 ...
- 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]
文章目录 题目描述-448 一.哈希Map 二.空间复杂度的优化--鸽笼原理 三.总结 题目描述-442 一.还是hashMap 二.继续鸽笼原理 题目描述-41 一.基础方案 二.数组模拟Map 题 ...
- LeetCode-----算法448.找到所有数组中消失的数字
题目: 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. ...
- 找到所有数组中消失的数字_【一点资讯】千万程序员的呼声:面试如何拿到大厂Offer?这份阅读量超过11W+的算法刷题宝典请你原地查收 www.yidianzixun.com...
如何才能通过面试拿到大厂Offer? "刷leetcode!" 这是我听到最多的回答! 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是面测试.算 ...
- 《LeetCode力扣练习》第448题 找到所有数组中消失的数字 Java
<LeetCode力扣练习>第448题 找到所有数组中消失的数字 Java 一.资源 题目: 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你 ...
- 2021-12-19:找到所有数组中消失的数字。 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums
2021-12-19:找到所有数组中消失的数字. 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] 范围内但没有出现在 nums ...
最新文章
- MILA研究院唐建:基于图神经网络的关系推理(附视频)
- redux 入门到实践
- 访问者模式讨论篇:java的动态绑定与双分派
- 八大排序算法(理论和动态图)
- mysql 生明变量_MySql中的变量定义
- 计算机实物知识需求市场调研,能力本位计算机维护论文
- 用Java的Set实现交并差等集合运算
- 昂着头的艺术-伯爵在城堡的日记
- 灰度内测是什么意思?
- java 字符串倍_java字符串拼接与性能分析详解
- C# 判断一个字符串是否为url
- Jekyll本地搭建开发环境以及Github部署流程
- Microsoft Deployment Toolkit 2010 新功能实战之三
- docker安装jdk8
- CAD地形图等高线标高批量取整工具,解决等高线标高出现小数的问题,等高线高程批量取整,在指定限差内将等高线标高修改为最接近的整数
- SpringBoot项目对接短信平台Demo
- Mac安装homebrew,postman,charles,switchhost
- 自动驾驶技术基础——GNSS
- rails gem devise
- html5 video首次观看禁止快进,Video Speed Controller - 快进/后退/回看在线视频
热门文章
- 剑指Offer - 面试题66. 构建乘积数组(正反遍历)
- LeetCode 103. 二叉树的锯齿形层次遍历(BFS / 双栈)
- LeetCode 657. 机器人能否返回原点
- java webservice 服务器_java如何写webservice服务端
- Cygwin中如何像在Ubuntu中一样安装软件
- django简介及环境搭建
- python中的列表和元组_百度资讯搜索_python中的列表和元组
- 论文浅尝 | 通过多原型实体指称向量关联文本和实体
- NLP事件抽取综述(上中下):中文事件抽取、开放域事件抽取、事件数据生成、跨语言事件抽取、小样本事件抽取、零样本事件抽取等类型
- 文献阅读6-Entity-Relation Extraction as Multi-turn Question Answering(实体关系联合抽取,层次标签依赖关系,multi-turn QA)