LeetCode(41) First Missing Positive
来源:互联网 发布:酷乐视s3装软件 编辑:程序博客网 时间:2024/05/01 23:32
题目如下:
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.
分析如下:
首先, 要理解题意:
如果输入是{1,2,3,5},输出是4。
如果输入是{1,2,3,4}, 输入是5。
如果输入是{1000},输入是1,不是1001。
所以题目是需要你在从1 ~ +∞的范围中,找到没有在输入数组出现过的最小的正数。
然后,这道题基本上不太好想,需要借助bucket sort的思路来考虑。
首先扫描一遍数组,如果某个元素在1~n之间,则把它放入原数组中的i-1位置。最后扫描原数组一遍,找到第一个满足A[i] != i+1的数。 更加详细的分析和图片解释可以看这篇文章的解释。
我的代码:
//思路来自bucket sort//8msclass Solution {public: void exchange(int& a, int& b) { int tmp = a; a = b; b = tmp; } int firstMissingPositive(int A[], int n) { int i = 0; while (i < n) { if (A[i] != i + 1 && A[i] >= 1 && A[i] <= n && A[A[i] - 1] != A[i] ) //最后这个条件防止死循环 { exchange(A[i], A[A[i] - 1]); } else { ++i; } } for (int i = 0; i < n; ++i) { if (A[i] != (i + 1)) return i + 1; } return n + 1; }};
参考资料:
1 http://www.cnblogs.com/AnnieKim/archive/2013/04/21/3034631.html
0 0
- LeetCode(41) First Missing Positive
- [leetcode 41] First Missing Positive
- [Leetcode] 41 - First Missing Positive
- [LeetCode 41]First Missing Positive
- [leetcode] #41 First Missing Positive
- First Missing Positive - LeetCode 41
- Leetcode 41 First Missing Positive
- leetcode 41: First Missing Positive
- LeetCode-41 First Missing Positive
- Leetcode#41||First Missing Positive
- 【Leetcode】 First Missing Positive #41
- LeetCode 41 First Missing Positive
- leetcode-41 First Missing Positive
- leetcode 41:First Missing Positive
- [leetcode 41]First Missing Positive
- LeetCode 41 First Missing Positive
- LeetCode 41:First Missing Positive
- Leetcode 41 - First Missing Positive
- Struts2分页(改进版)————封装Page类
- Struts2 分页
- Vim 正则表达式(内容部分转载、部分补充、部分修改)
- 面试题(三)二维数组中的查找
- 2014下半年总结
- LeetCode(41) First Missing Positive
- Address already in use: JVM_Bind错误的解决
- Codeforces Good Bye 2014 解题报告 (A B C D)
- 2015年,新的一年,关于过去,关于未来,关于自己!
- 华人捕鱼可不可以把死鱼的几率调试的简单一点
- 写在2014的尾巴上
- ubuntu git 安装
- 重构笔记——内联临时变量
- leetcode 170: Two Sum III - Data structure design