LeetCode 41: First Missing Positive
Given an unsorted integer array, find the first missing positive integer.
For example,
Given[1, 2, 0]
Return3
,
And[3, 4,-1, 1]
Return2
.
Your algorithm shocould run in O (n) time and uses constant space.
// Similar to bucket sorting, swap array elements so that the I-th digit in the array stores the value (I + 1); // finally traverse the array to find the first element that does not meet this requirement, returns its subscript. The whole process involves traversing two frequency groups with the complexity of O (n ). Class Solution {public: int firstMissingPositive (vector
& Nums) {int n = nums. size (); for (int I = 0; I <n; ++ I) {while (nums [I]> 0 & nums [I] <n & nums [nums [I]-1]! = Nums [I]) swap (nums [nums [I]-1], nums [I]) ;}for (int I = 0; I <n; ++ I) {if (nums [I]! = I + 1) return I + 1;} return n + 1 ;}};