描述
给出一个未排序的数组,找出丢失的数,从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;
}
};