找到所有数组中消失的数字(java)

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果.

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

输出:[5,6]

输入:nums = [1,1]

输出:[2]

遍历nums,将遇到的元素index作为索引,让nums[index]增加nums.length;因为原来nums数组中的元素范围在[1, n],所以遍历完成后,所有的nums中的元素不大于nums.length的就是没出现过的元素。

java 复制代码
import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
        int n = nums.length;
        for(int num:nums) {
            int x = (num-1) % n;
            nums[x]+=n;
        }
        List<Integer> ret = new ArrayList<Integer>();
        for(int i = 0;i<n;i++) {
            if(nums[i]<=n)
                ret.add(i+1);
        }
        return ret;
    }

}
相关推荐
It's now7 分钟前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈7 分钟前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn089510 分钟前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin22 分钟前
Java 8日期时间API完全指南
java·开发语言·python
毕设源码-赖学姐28 分钟前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
yongui4783434 分钟前
MATLAB的指纹识别系统实现
算法
高山上有一只小老虎36 分钟前
翻之矩阵中的行
java·算法
jghhh0143 分钟前
RINEX文件进行卫星导航解算
算法
火钳游侠1 小时前
java单行注释,多行注释,文档注释
java·开发语言
爱思德学术1 小时前
中国计算机学会(CCF)推荐学术会议-A(计算机科学理论):LICS 2026
算法·计算机理论·计算机逻辑