LeetCode-41. 缺失的第一個正數
阿新 • • 發佈:2018-12-25
題目地址:https://leetcode-cn.com/problems/first-missing-positive/
思路:O(n)複雜度,不能用輔助空間。考慮將陣列按照順序調換位置,也就是按照0,1,2,3……的順序放置。
AC程式碼:
class Solution { public: int firstMissingPositive(vector<int>& nums) { int n = nums.size(); for(int i=0;i<n;i++){ while(nums[i]>0 && nums[i]<=n && nums[i]!=i+1 && nums[nums[i]-1]!=nums[i]){ int temp = nums[i]; nums[i] = nums[temp-1]; nums[temp-1] = temp; } } for(int i=0;i<n;i++){ if(nums[i]!=i+1) return i+1; } return n+1; } };