最蛋疼是要求 常数空间复杂度 O(N)时间复杂度
常量空间复杂度去处理数组问题,一般思路就是元素交换。
class Solution
{
public
:
int firstMissingPositive(vector
<int>& nums
) {
int N
= nums
.size();
int loc
= 0;
while(loc
< N
){
if(nums
[loc
] == loc
+1){
loc
++;
continue;
}
if(nums
[loc
] <= 0 || nums
[loc
] > N
|| nums
[nums
[loc
]-1] == nums
[loc
]){
nums
[loc
++] = 0;
continue;
}
swap(nums
[loc
],nums
[nums
[loc
]-1]);
}
for(int i
=0;i
<N
;i
++){
if(nums
[i
] == 0) return i
+1;
}
return N
+1;
}
};
转载请注明原文地址:https://tech.qufami.com/read-2126.html