假设数组长度为N,最小没出现的正整数肯定在1~N+1中。
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
First Missing Positive
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Your algorithm should run in O(n) time and uses constant space.
'''
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
length = len(nums)
if length == 0:
return 1
flag = [0] * length
for i in nums:
if 0 < i <= length:
flag[i - 1] = 1
print flag
for i in range(length):
if flag[i] == 0:
return i + 1
return length + 1
if __name__ == "__main__":
s = Solution()
print s.firstMissingPositive([1])
print s.firstMissingPositive([1,2,0])
print s.firstMissingPositive([3,4,-1,1])