classSolution { public: intfirstMissingPositive(vector<int>& nums){ int n = nums.size(); for (int& num: nums) { if (num <= 0) { num = n + 1; } } for (int i = 0; i < n; ++i) { int num = abs(nums[i]); if (num <= n) { nums[num - 1] = -abs(nums[num - 1]); } } for (int i = 0; i < n; ++i) { if (nums[i] > 0) { return i + 1; } } return n + 1; } };
classSolution { publicintfirstMissingPositive(int[] nums) { intn= nums.length; for (inti=0; i < n; ++i) { if (nums[i] <= 0) { nums[i] = n + 1; } } for (inti=0; i < n; ++i) { intnum= Math.abs(nums[i]); if (num <= n) { nums[num - 1] = -Math.abs(nums[num - 1]); } } for (inti=0; i < n; ++i) { if (nums[i] > 0) { return i + 1; } } return n + 1; } }
[sol1-Python3]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
classSolution: deffirstMissingPositive(self, nums: List[int]) -> int: n = len(nums) for i inrange(n): if nums[i] <= 0: nums[i] = n + 1 for i inrange(n): num = abs(nums[i]) if num <= n: nums[num - 1] = -abs(nums[num - 1]) for i inrange(n): if nums[i] > 0: return i + 1 return n + 1
[sol1-C]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
intfirstMissingPositive(int* nums, int numsSize) { for (int i = 0; i < numsSize; ++i) { if (nums[i] <= 0) { nums[i] = numsSize + 1; } } for (int i = 0; i < numsSize; ++i) { int num = abs(nums[i]); if (num <= numsSize) { nums[num - 1] = -abs(nums[num - 1]); } } for (int i = 0; i < numsSize; ++i) { if (nums[i] > 0) { return i + 1; } } return numsSize + 1; }
funcfirstMissingPositive(nums []int)int { n := len(nums) for i := 0; i < n; i++ { if nums[i] <= 0 { nums[i] = n + 1 } } for i := 0; i < n; i++ { num := abs(nums[i]) if num <= n { fmt.Println(num-1) nums[num - 1] = -abs(nums[num - 1]) } } for i := 0; i < n; i++ { if nums[i] > 0 { return i + 1 } } return n + 1 }
funcabs(x int)int { if x < 0 { return -x } return x }
classSolution { public: intfirstMissingPositive(vector<int>& nums){ int n = nums.size(); for (int i = 0; i < n; ++i) { while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) { swap(nums[nums[i] - 1], nums[i]); } } for (int i = 0; i < n; ++i) { if (nums[i] != i + 1) { return i + 1; } } return n + 1; } };
[sol2-Java]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution { publicintfirstMissingPositive(int[] nums) { intn= nums.length; for (inti=0; i < n; ++i) { while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) { inttemp= nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } } for (inti=0; i < n; ++i) { if (nums[i] != i + 1) { return i + 1; } } return n + 1; } }
[sol2-Python3]
1 2 3 4 5 6 7 8 9 10
classSolution: deffirstMissingPositive(self, nums: List[int]) -> int: n = len(nums) for i inrange(n): while1 <= nums[i] <= n and nums[nums[i] - 1] != nums[i]: nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1] for i inrange(n): if nums[i] != i + 1: return i + 1 return n + 1
[sol2-C]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
intfirstMissingPositive(int* nums, int numsSize) { for (int i = 0; i < numsSize; ++i) { while (nums[i] > 0 && nums[i] <= numsSize && nums[nums[i] - 1] != nums[i]) { int t = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i], nums[i] = t; } } for (int i = 0; i < numsSize; ++i) { if (nums[i] != i + 1) { return i + 1; } } return numsSize + 1; }
[sol2-Golang]
1 2 3 4 5 6 7 8 9 10 11 12 13 14
funcfirstMissingPositive(nums []int)int { n := len(nums) for i := 0; i < n; i++ { for nums[i] > 0 && nums[i] <= n && nums[nums[i]-1] != nums[i] { nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1] } } for i := 0; i < n; i++ { if nums[i] != i + 1 { return i + 1 } } return n + 1 }