题解 | #缺失的第一个正整数#
缺失的第一个正整数
https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5
一、知识点
数组 数学
二、解题思路
遍历数组,若nums[i]>=1 && nums[i]<=len时,
通过不断交换,最后使得nums[i]出现在下标nums[i]-1的位置。
最后遍历数组,若i+1!=nums[i],则返回i+1即可。
三、C++解法
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int minNumberDisappeared(vector<int>& nums) {
int len = nums.size();
for (int i = 0; i < len; i ++) {
if ((i + 1) == nums[i]) {
continue;
}
int val = nums[i];
while (val >= 1 && val <= len && val != nums[val-1]) {
swap(val, nums[val-1]);
}
}
for (int i = 0; i < len; i ++) {
if ((i + 1) != nums[i]) {
return i+1;
}
}
return len+1;
}
};
#在找工作求抱抱#面试必刷Top101-题解 文章被收录于专栏
手把手带你刷题