描述
给出一个未排序的数组,找出丢失的数,从1开始的
解决
遍历数组,交换数,使得每个数对应索引号。最后再遍历看哪一个数不对,返回即可。
class Solution {
public:
int firstMissingPositive(
vector<int>& nums) {
int length = nums.size();
for (
int i =
0; i < length; ++i)
{
while (nums[i] >
0 && nums[i] < length && nums[i] != i +
1 && nums[i] != nums[nums[i] -
1])
swap(nums[i], nums[nums[i] -
1]);
}
for (
int i =
0; i < length; ++i)
{
if (i +
1 != nums[i])
return i +
1;
}
return length +
1;
}
};
转载请注明原文地址: https://ju.6miu.com/read-970088.html