Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3 ,
and [3,4,-1,1] return 2 .
Your algorithm should run in O(n) time and uses constant space.
Problem-Solving ideas: The array has a total n number, if all is continuous, the largest number is N, that is, the value of the largest return is n+1, traversing the array, if the current number of num[i],
If Num[i]<=0 or num[i] exceeds n, then the first discarded integer must be in front of Num[i], and num[i] and num[n-1] will be exchanged, n--;
If 1<=num[i]<=n, indicate that this number may be good, put him in the right place Swap (num[i],num[num[i]-1])
If num[i]==i+1, it indicates that the number is in the correct position, i++
classSolution { Public: intFirstmissingpositive (intA[],intN) {intm =N; for(intI=0; i<m;i++) { if(A[i] = = i+1)Continue; Else { if(A[i] > m | | A[i] = =0|| A[i] <0|| A[i] <=i) {if(i==m-1) returnm; Swap (A[i],a[m-1]); M--; I--; } Else { if(A[i] = = a[a[i]-1]) {Swap (a[i],a[m-1]); M--; I--; } Else{swap (A[i],a[a[i]-1]); I--; } } } } returnm+1; }};
Leetcode First Missing Positive