41-First-Missing-Positive
0x0 题目详情
0x1 解题思路
0x2 代码实现
class Solution {
public int firstMissingPositive(int[] nums) {
if(nums==null){
return -1;
}
if(nums.length==0){
return 1;
}
for(int i=0;i<nums.length;i++){
//将数放到正确的位置上
//注意这里只能是nums[nums[i]-1]!=nums[i],而不能是nums[i]-1!=i
//因为如果数组为[1,1],这时就会产生死循环
while(nums[i]>0 && nums[i]<nums.length && nums[nums[i]-1]!=nums[i]){
swap(nums,nums[i]-1,i);
}
}
for(int i=0;i<nums.length;i++){
if(nums[i]-1!=i){
return i+1;
}
}
return nums.length+1;
}
private void swap(int[] nums,int lhs,int rhs){
int temp=nums[lhs];
nums[lhs]=nums[rhs];
nums[rhs]=temp;
}
}0x3 课后总结
Last updated