# [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; } } ```