# First Missing Positive Leetcode Solution

In this post, we are going to solve the First Missing Positive Leetcode Solution problem of Leetcode. This Leetcode problem is done in many programming languages like C++, Java, and Python.

## Problem

Given an unsorted integer array `nums`, return the smallest missing positive integer.

You must implement an algorithm that runs in `O(n)` time and uses constant extra 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`

Now, lets see the leetcode solution of First Missing Positive Leetcode Solution.

### First Missing Positive Leetcode Solution in Python

```class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
n = len(nums)

# Correct slot:
# nums[i] = i + 1
# nums[i] - 1 = i
# nums[nums[i] - 1] = nums[i]
for i in range(n):
while nums[i] > 0 and nums[i] <= n and nums[nums[i] - 1] != nums[i]:
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]

for i, num in enumerate(nums):
if num != i + 1:
return i + 1

return n + 1
```

### First Missing PositiveLeetcode Solutionin CPP

```class Solution {
public:
int firstMissingPositive(vector<int>& nums) {
const int n = nums.size();

// Correct slot:
// nums[i] = i + 1
// nums[i] - 1 = i
// nums[nums[i] - 1] = nums[i]
for (int i = 0; i < n; ++i)
while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1])
swap(nums[i], nums[nums[i] - 1]);

for (int i = 0; i < n; ++i)
if (nums[i] != i + 1)
return i + 1;

return n + 1;
}
};
```

### First Missing Positive Leetcode Solution in Java

```class Solution {
public int firstMissingPositive(int[] nums) {
final int n = nums.length;

// Correct slot:
// nums[i] = i + 1
// nums[i] - 1 = i
// nums[nums[i] - 1] = nums[i]
for (int i = 0; i < n; ++i)
while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1])
swap(nums, i, nums[i] - 1);

for (int i = 0; i < n; ++i)
if (nums[i] != i + 1)
return i + 1;

return n + 1;
}

private void swap(int[] nums, int i, int j) {
final int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
```

Note: This problem First Missing Positive is generated by Leetcode but the solution is provided by Chase2learn This tutorial is only for Educational and Learning purposes.

NEXT: Trapping Rain Water

Sharing Is Caring