题目链接:缺失的第一个正数
解法,
1、遍历数组,将数组归位,如下标为0,存放1,下标1,存放2,依此类推
2、从准备的数据中找到第一个缺失的数,
时间复杂度O() ,空间复杂度O(1);
显然这个不符合题目要求,不管怎么样,先做出了一个解;
代码如下:
public int firstMissingPositive(int[] nums) {
int n = nums.length;
// 准备数据
for(int i = 0; i < n ; i++){
for(int j = i;j < n ; j++){
if(nums[j] == i+1){
int temp = nums[i];
nums[i] = i+1;
nums[j] = temp;
}
}
}
// 查找第一个非 1数字
for(int i = 0;i < n; i++){
if(i==n-1&&nums[i]==i+1){
return i+2;
}
if(nums[i]!= i+1){
return i+1;
}
}
return 1;
}
网友评论