题目大意:在长度为N数组A中找到一个未出现的正整数。
条件:
1)时间复杂度尽可能低
2)N的长度[1,100,000]
3)每一个A中的元素的值域为[-1,000,000,1,000,000]
分析:
1)排序,然后遍历判断(A[i]-A[i-1]&& A[i]>0)>=2, 输出ans = (A[i]+1), O(n) = n*logn + n
2)利用字典的想法,创建一个B数组,数组长度为[100,000,002], 遍历数组,判断A[i] > 0, B[A[i]] = 1. 结束后从1开始遍历数组,如果出现B[i] = 0,输出i. O(n) <= 2n.
代码:
代码很简单实现,这里就不给了。
暂时只能想到这两种,如果有别的想法欢迎交流。