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