> For the complete documentation index, see [llms.txt](https://docs-57.gitbook.io/data-structure-and-algorithms/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-57.gitbook.io/data-structure-and-algorithms/problems/array/first-missing-positive.md).

# 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.

&#x20;

**Example 1:**

<pre><code><strong>Input: nums = [1,2,0]
</strong><strong>Output: 3
</strong><strong>Explanation: The numbers in the range [1,2] are all in the array.
</strong></code></pre>

**Example 2:**

<pre><code><strong>Input: nums = [3,4,-1,1]
</strong><strong>Output: 2
</strong><strong>Explanation: 1 is in the array but 2 is missing.
</strong></code></pre>

**Example 3:**

<pre><code><strong>Input: nums = [7,8,9,11,12]
</strong><strong>Output: 1
</strong><strong>Explanation: The smallest positive integer 1 is missing.
</strong></code></pre>

&#x20;

```csharp
public class Solution
{
    public int solution(int[] nums)
    {
        if (nums?.Length > 0)
        {
            HashSet<int> set = new(nums);
            int i = 1;

            while (set.Contains(i))
            {
                i++;
            }

            return i;
        }
        return 0;
    }

}
```
