首页 > 其他分享 >找到所有数组中消失的数字

找到所有数组中消失的数字

时间:2024-01-30 23:13:04浏览次数:29  
标签:元素 数字 nums int res 消失 List 数组

448. Find All Numbers Disappeared in an Array (Easy)

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

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

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

示例:

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

输出:
[5,6]
//思路:通过交换数组元素,使得数组上的元素在正确的位置上。
public List<Integer> findDisappearedNumbers(int[] nums) {
	List<Integer> res = new ArrayList<>();
	if(nums== null || nums.length==0){
		return res;
	}


	for(int i=0;i<nums.length;i++){
		if(nums[i] != nums[nums[i]-1]){
			swap(nums,i,nums[i]-1);
			i--;
		}
		//System.out.println(Arrays.toString(nums));
	}
	//System.out.println(Arrays.toString(nums));

	for(int i=0;i<nums.length;i++){
		if(nums[i] != i+1){
			res.add(i+1);
		}
	}
	return res;
}

private void swap(int[] nums,int i,int j){
	int tmp = nums[i];
	nums[i] = nums[j];
	nums[j] = tmp;
}

参考:

标签:元素,数字,nums,int,res,消失,List,数组
From: https://www.cnblogs.com/i9code/p/17998187

相关文章

  • JAVA基础-数组
    数组(array)是一种容器,用来存储同种数据类型的多个值。总结:数组容器在存储数据的时候,需要结合数据类型考虑。例如:int类型的数组容器(booleanbyteshortdouble)建议:容器的类型,和存储的数据类型保持一致数组的定义格式⚫格式一:数据类型[]变量名⚫范例:int[]array⚫格......
  • C语言之二维数组的奥妙
    二维数组是什么二维数组是一个数组,数组的元素是数组type arr[N]={arr[M]};上图等价于typearr[N][M]N行M列数组,N和M都为整形常量 二维数组的存储方法如图是一个两行两列的二维数组,比如inta[2][2],在内存中是如何存储的采用的是蛇形的方法 二维数组的使用1#i......
  • VBA字节数组
    1SubreadArrByte()2DimstrPathAsString,ArByte()AsByte3DimintFileLenAsInteger4'配置路径、字节数组5strPath=ActivePresentation.Path'6strPath=strPath&"\"&"ByteFile-副本.txt"......
  • 【开源操作系统】上海道宁为您带来稳定、安全、开源和易用的操作系统——Ubuntu,为您的
    ​Ubuntu是源于非洲的一种传统价值观意为“人性、关爱和共享”这种价值观在开源、稳定、安全、易用的Ubuntu操作系统中得到了完美的体现  除此之外,Ubuntu还具有强大的安全性它自带了诸多安全功能如防火墙、加密文件系统等可以有效地保护用户的隐私和数据安全......
  • 智能水肥一体化灌溉系统:提升农业生产效率的数字化解决方案
    一、设备介绍(key-iot.com.cn):我们的星创易联设备是智能水肥一体化灌溉系统的核心组成部分。该设备由多个先进的传感器和执行器组成,可以对环境因素、土壤湿度和植物生长状态进行实时监测。其中包括:1.土壤湿度传感器:通过监测土壤湿度,精确判断农田的水分状况,避免灌溉不足或过度......
  • 使用Java处理HTTP状态码:一场代码与数字的奇妙之旅
    在互联网的世界里,HTTP状态码就如同交通信号灯,告诉我们请求是否成功,或者出了什么问题。当我们在Java中与Web服务器打交道时,了解这些状态码是必不可少的。今天,就让我们一起踏上这段代码与数字的奇妙之旅,看看如何使用Java来处理这些HTTP状态码。首先,我们要明白HTTP状态码的作用。简单......
  • LeetCode 2808 使循环数组所有元素相等的最少秒数
    题目描述原题链接:2808.使循环数组所有元素相等的最少秒数解题思路每次变化可以选择变成前一个元素或后一个元素,包括[0]和[n-1]的转化;换个角度思考,每秒最多可以有两个不同元素nums[i-1]和nums[i+1]变化成nums[i]元素;假设nums[i]元素只出现一次,想要将所有元素同化那么......
  • 代码随想录算法训练营第六天 |242. 有效的字母异位词 349. 两个数组的交集 202. 快乐
    1.两数之和 已解答简单 相关标签相关企业 提示 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同......
  • [转]JavaScript 判断是否为数字的几种方式
    原文地址:JavaScript判断是否为数字的几种方式_js判断是否是数字-CSDN博客前言1.typeof、instanceof、Number.isInteger2.parseInt、parseFloat3.isNaN、isFinite4.Number.isNaN、Number.isFinite5.正则表达式6.终极方案(推荐)7.结语前言js判断是否为数字的......
  • C#(10):传值,输出,引用,数组,具名,可选参数,拓展方法
    传值参数:被调用后并不会更改变量值,改变的是方法中传去的变量值副本,仅影响方法中的参数值,不影响变量本身的值变量以及参数指向的是地址,方法调用后参数中重新指向新对象地址,将原来引用的变量对象地址丢弃,重新创建新对象地址  getHashcode方法,获取内存中的对象的has......