41. 缺失的第一个正数
Posted Zy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了41. 缺失的第一个正数相关的知识,希望对你有一定的参考价值。
1 class Solution {
2 public:
3 int firstMissingPositive(vector<int>& nums) {
4 if(nums.empty()){return 1;}
5 int n=nums.size();
6 for(int i=0;i<n;++i){
7 while(nums[i]>0 and nums[i]<=n and nums[nums[i]-1]!=nums[i]){
//把nums[i]应该在的位置的数字和当前nums[i]交换,一直交换直到当前位置i的值等于i+1,或者nums[i]<=0 or nums[i]>n
8 swap(nums[i],nums[nums[i]-1]);
9 }
10 }
11 for(int i=0;i<n;++i){
12 if(nums[i]!=i+1){//从前往后顺序查找,一旦找到对应位置的值不等于序号加1,说明这个数字没有出现,返回即可
13 return i+1;
14 }
15 }
16 return n+1;
17 }
18 };
以上是关于41. 缺失的第一个正数的主要内容,如果未能解决你的问题,请参考以下文章