- 题目:https://leetcode.com/problems/first-missing-positive/
- 思路:
- 要求说O(n)的时间复杂度,那肯定需要空间换时间了
- 统计出现的正数次数,然后统计1-次数的正整数的出现次数;从1开始check,找第一个出现为0次的正整数
- 坑
- 返回值最大和最小搞错了【返回1 or positive_length+1】
- 代码
class Solution { public: int firstMissingPositive(vector<int>& nums) { vector<int> temp; int positive_length=0; for (int i = 0 ;i < nums.size(); i++) { if (nums[i] > 0) positive_length++; } if (positive_length == 0) return 1; for (int i = 0; i < positive_length+1; i++) temp.push_back(0); for (int i = 0 ;i < nums.size(); i++) { if (nums[i] > 0 && nums[i] < positive_length+1) { temp[nums[i]]++; } } for (int i = 1; i < positive_length+1; i++) { if (temp[i] == 0) return i; } return positive_length+1; } };
41. First Missing Positive

最新推荐文章于 2020-09-09 23:19:42 发布
