[LintCode]失われた最初の正の整数
2833 ワード
1 class Solution {
2 public:
3 /**
4 * @param A: a vector of integers
5 * @return: an integer
6 */
7 int firstMissingPositive(vector<int> A) {
8 // write your code here
9 int n = A.size();
10 for (int i = 0; i < n; i++)
11 while (A[i] > 0 && A[i] <= n && A[A[i] - 1] != A[i])
12 swap(A[i], A[A[i] - 1]);
13 for (int i = 0; i < n; i++)
14 if (A[i] != i + 1)
15 return i + 1;
16 return n + 1;
17 }
18 };