commit 2d3548496b062725d6b40ae2a1941a8c44d1213c
parent 53d63e9925bd3b762fedb4d5bda4489d8613fb4f
Author: Andrew Laack <andrew@laack.co>
Date: Tue, 15 Jul 2025 17:55:17 -0500
Completed first missing positive
Diffstat:
1 file changed, 39 insertions(+), 0 deletions(-)
diff --git a/first-missing-positive/first-missing-positiveV1.py b/first-missing-positive/first-missing-positiveV1.py
@@ -0,0 +1,39 @@
+# this might be the first hard problem I've done that i felt proud of solving myself.
+
+
+class Solution:
+ def firstMissingPositive(self, nums: List[int]) -> int:
+ n = len(nums)
+ min_positive_num = -1
+ max_val = -1
+
+ for num in nums:
+ if (min_positive_num == -1 or num < min_positive_num) and num > 0:
+ min_positive_num = num
+ if num > max_val:
+ max_val = num
+
+ if min_positive_num > 1:
+ return 1
+
+ xor = 0b0000
+
+ for index, num in enumerate(nums):
+ if num > 0:
+ xor ^= num
+ else:
+ nums[index] = n + 1
+
+ for num in range(1, len(nums) + 1):
+ xor ^= num
+
+ if xor == 0 and max_val == len(nums):
+ return len(nums) + 1
+
+ for num in nums:
+ if abs(num) < len(nums):
+ nums[abs(num) - 1] = min(nums[abs(num) - 1], -nums[abs(num) - 1])
+
+ for index, num in enumerate(nums):
+ if num > 0:
+ return index + 1