2024-03-26 Daily Challenge
Today I have done leetcode's March LeetCoding Challenge with cpp
.
March LeetCoding Challenge 26
Description
First Missing Positive
Given an unsorted integer array nums
. Return the smallest positive integer that is not present in nums
.
You must implement an algorithm that runs in O(n)
time and uses O(1)
auxiliary space.
Example 1:
Input: nums = [1,2,0] Output: 3 Explanation: The numbers in the range [1,2] are all in the array.
Example 2:
Input: nums = [3,4,-1,1] Output: 2 Explanation: 1 is in the array but 2 is missing.
Example 3:
Input: nums = [7,8,9,11,12] Output: 1 Explanation: The smallest positive integer 1 is missing.
Constraints:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
Solution
class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
int len = nums.size();
for(auto &n : nums) {
if(n < 1) n = INT_MAX;
}
for(auto n : nums) {
n = abs(n);
if(n > len) continue;
if(nums[n - 1] > 0) nums[n - 1] = -nums[n - 1];
}
for(int i = 0; i < len; ++i) {
if(nums[i] > 0) return i + 1;
}
return len + 1;
}
};
// Accepted
// 173/173 cases passed (148 ms)
// Your runtime beats 76.92 % of cpp submissions
// Your memory usage beats 40.04 % of cpp submissions (83.1 MB)