同样是一道我不太能理解为什么能标为hard的题目。
我的解法是将所有正数都先放到map里面,然后就从小正数——也就是1——开始检查map,遇到的第一个不包含在map中的正数便是答案。最坏情况下的复杂度是O(n)
。
java
public class Solution { public int firstMissingPositive(int[] A) { HashMap<Integer, Boolean> map = new HashMap<Integer, Boolean>(); for (int a : A) { if (a > 0) { map.put(a, true); } } int v = 1; while (true) { if (!map.containsKey(v)) { break; } v++; } return v; } }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。