正数(hard)"/>
[数组]leetcode41:缺失的第一个正数(hard)
题目:
题解:
- 遍历一次数组把大于等于1的和小于数组大小的值放到原数组对应位置,然后再遍历一次数组查当前下标是否和值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么答案就是数组长度加1。
代码如下:
class Solution {
public:int firstMissingPositive(vector<int>& nums) {for(int i=0;i<nums.size();++i){//循环结束的条件为,一旦某个数字不能回到它应该回到的位置时就结束了,比如-1就不能回到-1的位置while(nums[i]>0&&nums[i]<=nums.size()&&nums[i]!=nums[nums[i]-1])swap(nums[i],nums[nums[i]-1]);}//寻找第一个逃票的人,若找不到就为数组长度+1for(int i=0;i<nums.size();++i)if(nums[i]!=i+1)return i+1;return nums.size()+1;}
};
更多推荐
[数组]leetcode41:缺失的第一个正数(hard)
发布评论