First Missing Positive
问题简介:给定一个未排序的整数数组,找到最小的缺失正整数
注:
1.要求时间复杂度为o(n)并且只用恒定的空间
举例:
1:
输入: [1,2,0]
输出: 3
2:
输入: [3,4,-1,1]
输出: 2
3:
输入: [7,8,9,11,12]
输出: 1
解法一:
先将数组排序,当排序后的数组的最后一个元素为负或为0即缺失的为1,定义一个目标target先定义为1,遍历数组,在遍历过程中将数组值与目标值比较是否相等,即target从最小正整数1开始增长
class Solution {
public int firstMissingPositive(int[] nums) {
int length = nums.length;
Arrays.sort(nums);
if(length == 0 || nums[length - 1] <= 0)return 1;
int target = 1;
for(int i = 0;i < length;i++){
if(nums[i] == target)target++;
}
return target;
}
}
复杂度分析:
时间复杂度:o(n)只遍历一遍数组即可
空间复杂度:o(1)使用恒定的空间
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海