[41. 缺失的第一个正数]
[TOC]
# 思路
> 第一次还是使用简单的创建一个新数组,但是呢,这个思想去测试用例的时候显示超内存。又想到之前刷题学到的TreeSet类其中的放法,这个类的方法中,add(T,t)方法添加的数字只重复一次,pollFirst()方法,去列表中第一个数字,即最小的数字,如果列表为空,则返回null。
再看这道题,说的是求最小的正整数,所以再使用ad方法进行添加的时候,判断是否为正整数,0和负整数均不添加。即进行判断。其他的看代码。
# 解题方法
> 描述你的解题方法
# 复杂度
- 时间复杂度:
> 添加时间复杂度, 示例: $O(n)$
- 空间复杂度:
> 添加空间复杂度, 示例: $O(n)$
# Code
```Java []
class Solution {
public int firstMissingPositive(int[] nums) {
TreeSet<Integer> ts = new TreeSet<>();
for (int num : nums) {
if (num > 0)
ts.add(num);
}
int pre = 0; //从1开始进行循环,每一次循环看时候有该数字,若没,则输出
while (true) {
pre++;
Integer x = ts.pollFirst();
if (x == null){
return pre;
}else{
if (x != pre)
return pre;
}
}
}
}
```