题目描述:
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?

个人第一下想法就是先给这个数组排序
class Solution {
public int firstMissingPositive(int[] nums) {
Arrays.sort(nums);
boolean flag = false;
int index=0;
for(int i=0;i<nums.length;i++){
if(nums[i]>0){
flag=true;
index=i;
break;
}
}
if(flag==false){
//表示全是负数
return 1;
} else{
//表示从索引位置index开始都是正数
if(nums[index]!=1){
return 1;
} else{
for(int i=index;i<nums.length-1;i++){
//还要考虑有没有重复的数字
if((nums[i]!=nums[i+1]) && nums[i]+1 != nums[i+1])
{
//表示不是连续的也不是重复的
return nums[i]+1;
}
}
return nums[nums.length-1]+1;
}
}
}
}
本文介绍了一种高效算法,用于查找未排序整数数组中缺失的最小正整数,该算法采用排序策略并考虑了特殊情况,实现了O(n)的时间复杂度。
179

被折叠的 条评论
为什么被折叠?



