No.206 - LeetCode[41] First Missing Positive - 数组中最小缺失正整数

tech2022-08-11  133

最蛋疼是要求 常数空间复杂度 O(N)时间复杂度

常量空间复杂度去处理数组问题,一般思路就是元素交换。

/* * @lc app=leetcode id=41 lang=cpp * * [41] First Missing Positive */ // @lc code=start class Solution { public: int firstMissingPositive(vector<int>& nums) { int N = nums.size(); int loc = 0; while(loc < N){ if(nums[loc] == loc+1){ loc++; continue; } if(nums[loc] <= 0 || nums[loc] > N || nums[nums[loc]-1] == nums[loc]){ nums[loc++] = 0; continue; } swap(nums[loc],nums[nums[loc]-1]); } for(int i=0;i<N;i++){ if(nums[i] == 0) return i+1; } return N+1; } }; // @lc code=end
最新回复(0)