第一个没有出现的正数

Posted narisu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个没有出现的正数相关的知识,希望对你有一定的参考价值。

问题描述

给定一个数组,从 1 到 n,找出数组中第一个没出现的正数。
例如:
给定[1,2,0],则返回 3。
给定[3,4,-1,1],则返回 2。
注意:算法需要 O(n) 的时间复杂度以及线性的空间复杂度。

输入格式

第一行输入整数 n(n≤106),接下来一行输入数组A[n]

输出格式

输出第一个没出现的正数。

代码

package javaexam;

import java.util.HashMap;
import java.util.Scanner;

public class UFindInt
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        
        int n = input.nextInt();
        HashMap map = new HashMap();
        
        for(int i = 0; i < n; ++i)
            map.put(input.nextInt(), 1);
        
        for(int i = 1; i <= n; ++i) // 此处需要有i=n,否则测试样例一不通过,而且题干是1到n。
        {
            if(!map.containsKey(i))
            {
                System.out.println(i);
                break;
            }
        }
    }
}

样例测试

样例一:

3
1 2 0
3

样例二

4
3 4 -1 1
2

以上是关于第一个没有出现的正数的主要内容,如果未能解决你的问题,请参考以下文章

41. 缺失的第一个正数

41. 缺失的第一个正数

41. 缺失的第一个正数

缺失的第一个正数

41. 缺失的第一个正数

精选力扣500题 第54题 LeetCode 41. 缺失的第一个正数c++/java详细题解