缺失的第一個正數
阿新 • • 發佈:2018-11-08
題目描述
給定一個未排序的整數陣列,找出其中沒有出現的最小的正整數。
- 示例 1:
輸入:[1,2,0]
輸出:3
- 示例 2:
輸入:[3,4,-1,1]
輸出:2
示例 3:
輸入:[7,8,9,11,12]
輸出:1
說明:
你的演算法的時間複雜度應為 \(\mathcal{O}(n)\),並且只能使用常數級別的空間。
我的解答
int firstMissingPositive(vector<int>& nums) { int n = nums.size(); int max = 0; for (int i = 0; i < n; i++) if (nums[i] > max) max = nums[i]; bool flags[max+2] = {false}; for (int i = 0; i < n; i++) { int num = nums[i]; if(num > 0) flags[num] = true; } if (n > 0) { for (int i = 1; i <= max+1; i++) if (!flags[i]) return i; } else return 1; }