一.题目
给你一个未排序的整数数组 nums
,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n)
并且只使用常数级别额外空间的解决方案。
示例 1:
输入: nums = [1,2,0]
输出: 3
示例 2:
输入: nums = [3,4,-1,1]
输出: 2
二.代码与解析
首先这道题我的解法的时间复杂度挺高的,空间复杂度也不是那么优化,但关键点是在=在于属于我自己打出来的哈哈哈哈。
优化点可以把hashmap换成hashset,因为不需要在意次数。当时没有想到用set集合。换成set集合后时间复杂度好多了点,在leetcode多击败了10%+的人
class Solution {
public int firstMissingPositive(int[] nums) {
int n = nums.length;
Map<Integer, Integer> map = new HashMap<>();
for(int i : nums) {
map.put(i , 1);
}
for(int i = 1;i <= n;i ++) {
if(!map.containsKey(i)) {
return i;
}
}
return n + 1;
}
}