First Missing Positive
2014-05-24 20:57
127 查看
First Missing Positive
这道题,数组里面的数会出现负数和零,这也就给我们解题带来了难度。
其实跳出来来想,我们只需要生成一张map,然后将数组里的数记录下来,然后从1开始去找,找到第一个missing的数字,就得到了答案
结果,仔细看了下题,他要求constant space。所以不能再生成新的hash表。不知道为什么这里Leetcode这里能够通过。
那么,既然不能再用多余的空间,那么我们就把这个数组自身进行一些变化。
首先,我们假设这个数组没有负数和0
A = 5, 7 , 6, 4 , 3 , 1
第一个数时5,那么把数组第五位取负,变成
A = 5, 7, 6 , 4, -3, 1
第二个数7,第七个数取负,超过数组大小了,不予操作
第三个数6:
A = 5, 7, 6, 4, -3, -1
……
最终得到
A=-5, 7, -6, -4, -3, -1
找到第一个不为负的数,就是7,角标为1,所以缺少的是2
那么有负数和0,的情况 在上面的数字7其实就是借鉴的方法,把他设为大于数组位数的数
这道题,数组里面的数会出现负数和零,这也就给我们解题带来了难度。
其实跳出来来想,我们只需要生成一张map,然后将数组里的数记录下来,然后从1开始去找,找到第一个missing的数字,就得到了答案
class Solution { public: int firstMissingPositive(int A[], int n) { if(n==0) return 1; map<int,int> mp; for(int i =0;i<n;i++) { mp[A[i]]=1; } int ans = -1; for(int i =1;i<=n+1;i++) { if(mp[i]==0) return i; } } };
结果,仔细看了下题,他要求constant space。所以不能再生成新的hash表。不知道为什么这里Leetcode这里能够通过。
那么,既然不能再用多余的空间,那么我们就把这个数组自身进行一些变化。
首先,我们假设这个数组没有负数和0
A = 5, 7 , 6, 4 , 3 , 1
第一个数时5,那么把数组第五位取负,变成
A = 5, 7, 6 , 4, -3, 1
第二个数7,第七个数取负,超过数组大小了,不予操作
第三个数6:
A = 5, 7, 6, 4, -3, -1
……
最终得到
A=-5, 7, -6, -4, -3, -1
找到第一个不为负的数,就是7,角标为1,所以缺少的是2
那么有负数和0,的情况 在上面的数字7其实就是借鉴的方法,把他设为大于数组位数的数
class Solution { public: int firstMissingPositive(int A[], int n) { int i; for(i=0;i<n;++i) { if(A[i]<=0) A[i] = n+2; } for(i=0;i<n;++i) { if(abs(A[i])<=n) { int index = abs(A[i])-1; A[index] = -abs(A[index]);//注意这里的abs很容易忽略,这里是为了防止数组里面有相同的数字出现。 } } for(i=0;i<n;++i) if(A[i] > 0) return i+1; return n+1; } };
相关文章推荐
- First Missing Positive
- leetcode 41 First Missing Positive
- LeetCode OJ:First Missing Positive (第一个丢失的正数)
- LeetCode First Missing Positive
- 41. First Missing Positive
- leetcode解题方案--041--First Missing Positive
- LeetCode--First Missing Positive (第一个丢失的正整数)Python
- Missing Number, First Missing Positive
- [LeetCode] First Missing Positive
- LeetCode - First Missing Positive
- leecode刷题 之 41 FirstMissingPositive
- First Missing Positive
- LeetCode-First Missing Positive
- 【LeetCode】First Missing Positive
- LeetCode 之 First Missing Positive
- LeetCode:First Missing Positive
- [leetcode]First Missing Positive
- First Missing Positive 第一个消失的正数
- leetcode-First Missing Positive
- leetCode_First Missing Positive