解题思路
看了讨论区之后才有的思路,遍历数组,将元素i放到数组i - 1坐标下,之后遍历数组找到第一个不匹配的坐标,返回该坐标加一即为不在给定数组里的最小整数。
代码
class Solution {
public:int firstMissingPositive(int A[], int n) {int i = 0;while(i < n){if(A[i] > 0 && A[i] <= n && A[A[i] - 1] != A[i]){swap(A[i],A[A[i] - 1]);continue;}i++;}i = 0;while(i < n){if(A[i] != i + 1)break;i++;}return i + 1;}
};