leetcode

Leetcode submissions
git clone git://git.laack.co/leetcode.git
Log | Files | Refs | README

first-missing-positiveV1.py (1061B)


      1 # this might be the first hard problem I've done that i felt proud of solving myself.
      2 
      3 
      4 class Solution:
      5     def firstMissingPositive(self, nums: List[int]) -> int:
      6         n = len(nums)
      7         min_positive_num = -1
      8         max_val = -1
      9 
     10         for num in nums:
     11             if (min_positive_num == -1 or num < min_positive_num) and num > 0:
     12                 min_positive_num = num
     13             if num > max_val:
     14                 max_val = num
     15 
     16         if min_positive_num > 1:
     17             return 1
     18 
     19         xor = 0b0000
     20 
     21         for index, num in enumerate(nums):
     22             if num > 0:
     23                 xor ^= num
     24             else:
     25                 nums[index] = n + 1
     26 
     27         for num in range(1, len(nums) + 1):
     28             xor ^= num
     29 
     30         if xor == 0 and max_val == len(nums):
     31             return len(nums) + 1
     32 
     33         for num in nums:
     34             if abs(num) < len(nums):
     35                 nums[abs(num) - 1] = min(nums[abs(num) - 1], -nums[abs(num) - 1])
     36 
     37         for index, num in enumerate(nums):
     38             if num > 0:
     39                 return index + 1