码迷,mamicode.com
首页 > 其他好文 > 详细

第一个没有出现的正数

时间:2018-05-18 20:41:26      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:shm   问题   hash   can   rgs   输入   str   而且   key   

问题描述

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

第一个没有出现的正数

标签:shm   问题   hash   can   rgs   输入   str   而且   key   

原文地址:https://www.cnblogs.com/narisu/p/9057885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!