题意理解
求一组数字中最小的缺失正整数
问题分析
用下标位置固定1到n的数,问题变成了填充这n个数。如果有缺失就是所要求的数,如果没有就是n+1。
其他
没想到。
链接
int firstMissingPositive(vector<int>& nums) {
int len = nums.size();
int i;
for(i = 0; i < len; i ++) //遍历数组
{
//当数值在1到n之间,且数值和对应i+1位置不等
while (nums[i] >= 1 && nums[i] <= len && nums[nums[i] - 1] != nums[i])
{
//持续交换两个位置数值
swap(nums[nums[i] - 1], nums[i]);
}
for(int v : nums)
cout << v << '\t';
cout << endl;
}
for(int v : nums)
cout << v << '\t';
for(i = 0; i < len; i++)
{
if (i + 1 != nums[i]) //当找到缺失的数值
break; //跳出循环
}
return i + 1; //输出
}