首页 > 其他分享 >错误的集合

错误的集合

时间:2024-01-30 23:13:40浏览次数:24  
标签:错误 nums int 复杂度 num 数组 集合

645. Set Mismatch (Easy)

集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。

给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

示例 1:

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

注意:

  1. 给定数组的长度范围是 [2, 10000]。
  2. 给定的数组是无序的。
//思路一:空间换时间的思路
public int[] findErrorNums(int[] nums) {
	int[] freq = new int[nums.length+1];

	for (int num : nums){
		freq[num]++;
	}

	int res1 = 0,res2=0;
	for(int num=1;num<=nums.length;num++){
		if(freq[num] == 2){
			res1 = num;
		}
		if(freq[num] == 0){
			res2 = num;
		}
	}
	return new int[]{res1,res2};
}
//思路二:最直接的方法是先对数组进行排序,这种方法时间复杂度为 O(NlogN)。
//本题可以以 O(N) 的时间复杂度、O(1) 空间复杂度来求解。
//主要思想是通过交换数组元素,使得数组上的元素在正确的位置上。
public int[] findErrorNums(int[] nums) {
    for (int i = 0; i < nums.length; i++) {
        while (nums[i] != i + 1 && nums[nums[i] - 1] != nums[i]) {
            swap(nums, i, nums[i] - 1);
        }
    }
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] != i + 1) {
            return new int[]{nums[i], i + 1};
        }
    }
    return null;
}

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

参考:

标签:错误,nums,int,复杂度,num,数组,集合
From: https://www.cnblogs.com/i9code/p/17998184

相关文章

  • 集合类
    Arrayint[]anArray=newint[10];int[]int_array={1,2,3};String[]str_array=newString[3];String[]str_array2=newString[]{"A","B","C"};//filllong[]long_array=newlong[5];Arrays.fill(long_......
  • 无涯教程-ExpressJS - 错误处理
    Express中的错误处理(errorhandling)是使用中间件完成,错误处理(errorhandling)中间件的定义方式与其他中间件函数相同,不同之处在于有四个参数,而不是三个–err,req,res,next,示例如下app.use(function(err,req,res,next){console.error(err.stack);res.status(500).......
  • 31-ArrayList和HashMap集合的排序
     扩展:在List集合中添加另一个集合时,一般常用两种方法booleanadd(Ee): 将list作为一个元素添加到集合中booleanaddAll(Collection<?extends E> c):把list中的所有元素添加到集合中 ArrayList类的排序方法(常用)packagelist;importjava.util.ArrayList......
  • IDEA编译生成可运行jar包 和 运行jar包报java.lang.NoClassDefFoundError错误,注意 MF
    IDEA编译生成可运行jar包和运行jar包报java.lang.NoClassDefFoundError错误,注意MF文件目录不要用默认目录,改成项目根目录运行环境:操作系统:ubuntu20.04javaversion:openjdkversion"11"2018-09-25OpenJDKRuntimeEnvironment18.9(build11+28)OpenJDK64-BitServer......
  • 错误码处理类的设计
    云API错误码的设计规则腾讯云云API错误码分为两级。以点号分隔。第一级错误码统一由API平台提供,业务选择合适的错误场景。第二级错误码可选,业务可自定义。例如,InvalidParameter.InvalidUserName。其中,第一级错误码为InvalidParameter,表示这是一个参数错误。第二级错误码为Inv......
  • python第五节:集合set(3)
    集合遍历for循环遍历集合中元素例子1:set1={'a','b','cde','张三','123'} foriinset1:   print(i) 结果:acdeb张三123 enumerate遍历索引和元素例子2:set1={'a','b','cde','张三','123'} forin......
  • Java中,遍历List集合有以下四种方式
    1.增强for循环(foreach):这种方式是最简单的,也是最易读的。它直接对集合中的每个元素进行操作,不需要额外的迭代器或索引变量。但是,这种方式不能在遍历过程中修改集合的结构(例如添加或删除元素)。2.使用迭代器:迭代器提供了一种通用的遍历集合的方式,可以在遍历过程中修改集合的结构。但......
  • Docker的错误和解决
    错误一dockerbuild"requiresexactly1argument.See'dockerbuild--help'. Usage: dockerbuild[OPTIONS]PATH|URL|- BuildanimagefromaDockerfile 解决  dockerbuild-torder.  (结尾有一个点)  错误二Gotpermissiondeniedwhile......
  • [错误处理]Support for password authentication was removed
    2021年8月13日github修改了验证的方法,相关的密码不能够直接输入,需要通过相关的秘钥token进行输入。因此我们需要在自己的账户生成对应的token才可以正常的在本地push对应的代码到远程github上。具体的方法如下:我们按照这个帖子操作一下:有效期可以设置为永久,防止到时候过期......
  • 理解Set集合数据结构
    一、Set的基本概念Set是一种包含不重复元素的集合。与List(列表)不同,Set中的元素是无序的,不能通过索引来访问。Set中的每个元素都是唯一的,重复的元素将被自动剔除。二、Set的常见操作1.添加元素:使用add()方法向Set中添加新元素。如果添加的元素已经存在于Set中,则不会有任何改变......