Hard
Given an unsorted array nums, return the smallest missing positive integer. Aim for O(n) time and O(1) extra space (use the array itself as a hash).
Input: nums = [1,2,0] Output: 3
Input: nums = [3,4,-1,1] Output: 2
Input: nums = [7,8,9,11,12] Output: 1