# [41. First Missing Positive](https://leetcode.com/problems/first-missing-positive/)
###### tags: `Array`, `Bloomberg`
Description:
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
```
**Example 2:**
```
Input: nums = [3,4,-1,1]
Output: 2
```
**Example 3:**
```
Input: nums = [7,8,9,11,12]
Output: 1
```
Solution:
```java=
class Solution {
public int firstMissingPositive(int[] nums) {
int n = nums.length;
for (int i = 0; i < n; i++) {
while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {
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) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
```