41. First Missing Positive
2016-12-02 22:40
162 查看
problem:
Given an unsorted integer array, find the first missing positive integer.
For example,
Given
and
Your algorithm should run in O(n) time and uses constant space.
虽然不能再另外开辟非常数级的额外空间,但是可以在输入数组上就地进行swap操作。
思路:交换数组元素,使得数组中第i位存放数值(i+1)。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。
Given an unsorted integer array, find the first missing positive integer.
For example,
Given
[1,2,0]return
3,
and
[3,4,-1,1]return
2.
Your algorithm should run in O(n) time and uses constant space.
虽然不能再另外开辟非常数级的额外空间,但是可以在输入数组上就地进行swap操作。
思路:交换数组元素,使得数组中第i位存放数值(i+1)。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。
class Solution { public: int firstMissingPositive(vector<int>& nums) { int i = 0; int result = 0; while(i < nums.size()) { if(nums[i] != i+1 && nums[i] >= 1 && nums[i] <= nums.size() && nums[nums[i]-1] != nums[i]) { swap(nums[i], nums[nums[i]-1]); } else i++; } int j=0; for(; j<nums.size(); j++) { if(nums[j] != j+1) { result = j+1; return result; } } result = nums.size()+1; return result; } };
相关文章推荐
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- leetcode problem 41 -- First Missing Positive
- 41 First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- LeetCode 41 First Missing Positive
- 【LeetCode OJ 41】First Missing Positive
- 41 First Missing Positive
- 41. First Missing Positive
- First Missing Positive - LeetCode 41
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- 41. First Missing Positive
- [Leetcode] 41 - First Missing Positive
- leetcode[41]First Missing Positive
- [leetcode] #41 First Missing Positive
- LeetCode41——First Missing Positive