题解 | #缺失的第一个正整数# [S-P1]
缺失的第一个正整数
http://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
[S-P3]: 由于不重复,缺少的正整数值属于[1, n+1], e.g.
[1,2,3,4,5] => 6
[1,2,3,4,6] => 5
import java.util.*;
// 缺少的正整数值属于[1, n+1]
public class Solution {
public int minNumberDisappeared (int[] nums) {
int n = nums.length;
for (int i = 0; i < n; i++) {
while (nums[i] != i+1 && nums[i] > 0 && nums[i] <= n) {
// e.g. if nums[0] = 3, swap nums[0] with nums[3-1=2]
swap(i, nums[i]-1, nums);
}
}
for (int i = 0; i < n; i++) {
if (nums[i] != i+1) return i+1;
}
return n+1;
}
void swap(int i, int j, int[] nums) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}