From 07d0d492e13505107755d5781cc0e6289ff77151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Khoa=20Hu=E1=BB=B3nh=20=28Daniel=29?= Date: Tue, 26 Mar 2024 23:47:29 +0700 Subject: [PATCH] Create main.go --- solution/41/main.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 solution/41/main.go diff --git a/solution/41/main.go b/solution/41/main.go new file mode 100644 index 0000000..cacd079 --- /dev/null +++ b/solution/41/main.go @@ -0,0 +1,36 @@ +package main + +func firstMissingPositive(nums []int) int { + n := len(nums) + + for i := 0; i < n; i++ { + if nums[i] <= 0 || nums[i] > n { + nums[i] = n + 1 + } + } + + for i := 0; i < n; i++ { + val := abs(nums[i]) + if val >= 1 && val <= n { + flagIndex := val - 1 + if nums[flagIndex] > 0 { + nums[flagIndex] *= -1 + } + } + } + + for i := 1; i <= n; i++ { + if nums[i - 1] > 0 { + return i + } + } + + return n + 1 +} + +func abs(x int) int { + if x < 0 { + return -x + } + return x +}