Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def firstMissingPositive(nums):
- """
- :type nums: List[int]
- :rtype: int
- """
- if not nums:
- return 1
- for i,v in enumerate(nums):
- if v > len(nums):
- nums[i]=-1
- elif v <= 0:
- nums[i]=-1
- else:
- while i+1 != nums[i] and 0<nums[i]<=len(nums):
- #print i, nums[i]-1, nums[i], nums[nums[i]-1]
- v = nums[i]
- nums[i] = nums[v-1]
- nums[v-1] = v
- #nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
- if nums[i] > len(nums) or nums[i] <=0:
- nums[i] = -1
- for i,v in enumerate(nums):
- if nums[i] != i+1:
- return i+1
- return len(nums)+1
- if __name__ == "__main__":
- print firstMissingPositive([1,2,0])
- print firstMissingPositive([3,4,-1,1])
- for i,v in enumerate(nums)
- for i,v in enumerate(nums):
- if v > len(nums):
- nums[i]=-1
- elif v <= 0:
- nums[i]=-1
- else:
- if 0 >= value > len(nums):
- continue
- def first_missing_positive(nums):
- """
- :type nums: List[int]
- :rtype: int
- """
- if not nums:
- return 1
- for index, value in enumerate(nums):
- if len(nums) < value <= 0:
- continue
- while index + 1 != nums[index] and 0 < nums[index] <= len(nums):
- v = nums[index]
- nums[index], nums[v-1] = nums[v-1], nums[index]
- nums[v-1] = v
- # Don't create infinite loops
- if nums[index] == nums[v-1]:
- break
- for index, value in enumerate(nums, 1):
- if value != index:
- return index
- return len(nums) + 1
- def first_missing_positive(nums):
- cnt = {}
- for x in nums:
- cnt[x] = 1
- fnd = 1
- for i in range(len(nums)):
- if cnt.get(fnd, 0) == 0:
- return fnd
- fnd += 1
- return fnd
Add Comment
Please, Sign In to add comment