当前位置:网站首页>leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
2022-08-03 20:05:00 【okokabcd】
一、题目大意
标签: 数组
https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
示例 1:
输入:nums = [4,3,2,7,8,2,3,1]
输出:[5,6]
示例 2:
输入:nums = [1,1]
输出:[2]
提示:
- n == nums.length
- 1 <= n <= 105
- 1 <= nums[i] <= n
- 进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。
二、解题思路
把所有重复出现的位置进行标记,然后再遍历一遍数组,即可找到没有出现过的数字。进一步优化,可以直接对原数组进行标记:把重复出现的数字在原数组出现的位置设为负数,最后仍然为正数的位置即为没有出现过的数。
三、解题方法
3.1 Java实现
public class Solution {
public List<Integer> findDisappearedNumbers(int[] nums) {
for (int num : nums) {
// 这个地方要注意 -1,数组下标从0开始
int pos = Math.abs(num) - 1;
if (nums[pos] > 0) {
nums[pos] = -nums[pos];
}
}
List<Integer> ans = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) {
ans.add(i + 1);
}
}
return ans;
}
}
四、总结小记
- 2022/8/3 下面做按数据结构开始做,先从数组开始
边栏推荐
猜你喜欢
危化企业双重预防机制数字化建设进入全面实施阶段
使用 ReportLab 绘制 PDF
Line the last time the JVM FullGC make didn't sleep all night, collapse
NNLM、RNNLM等语言模型 实现 下一单词预测(next-word prediction)
微导纳米IPO过会:年营收4.28亿 君联与高瓴是股东
In-depth understanding of JVM-memory structure
演讲议题及嘉宾重磅揭晓,TDengine 开发者大会推动数据技术“破局”
RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
倒计时2天,“文化数字化战略新型基础设施暨文化艺术链生态建设发布会”启幕在即
不要再用if-else
随机推荐
使用 ReportLab 绘制 PDF
xss.haozi练习通关详解
模板字符串概述
149. 直线上最多的点数-并查集做法
数学之美 第六章——信息的度量和作用
谁的孙子最多II
华为设备配置VRRP负载分担
relocation R_X86_64_PC32 against,/usr/bin/ld: final link failed: Bad value
宁德时代2号人物黄世霖辞任副董事长:身价1370亿
那些年我写过的语言
汉源高科8光口12电口交换机千兆8光8电12电16电网管型工业以太网交换机
不要再用if-else
CLIP论文解读
群辉查看硬盘存储占用的方式
YARN功能介绍、交互流程及调度策略
多模态 参考资料汇总
从腾讯阿里等大厂出来创业搞 Web3、元宇宙的人在搞什么
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
小马智行起诉擎天智卡:索赔6000万 彭军称要斗争到底
C51 存储类型与存储模式