第一个没有出现的正数

问题描述

给定一个数组,从 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

猜你喜欢

转载自www.cnblogs.com/narisu/p/9057885.html
今日推荐