【LeetCode】41. First Missing Positive
来源:互联网 发布:java经典实例 第三版 编辑:程序博客网 时间:2024/05/18 03:15
- Difficulty: Hard
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.
分析
本质上是桶排序(bucket sort),每当A[i]!=i+1的时候,将A[i]与A[A[i]-1]交换,直达无法交换为止,终止条件A[i]== A[A[i]-1]。
时间复杂度O(n)
class Solution {public:int firstMissingPositive(vector<int>& nums) {bucket_sort(nums);for (int i = 0; i < nums.size(); ++i)if (nums[i] != (i + 1))return i + 1;return nums.size() + 1;}private:static void bucket_sort(vector<int>& A) {const int n = A.size();for (int i = 0; i < n; i++) {while (A[i] != i + 1) {if (A[i] <= 0 || A[i] > n || A[i] == A[A[i] - 1])break;swap(A[i], A[A[i] - 1]);}}}};
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
- 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
- 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
- 关于opencv编程get到两个小技巧
- Android多渠道打包详解
- STM32F1系列——固件库函数使用手册摘要(慢更新)
- 在checkebok选项中进行批量删除
- QT学习笔记09QT编程规范
- 【LeetCode】41. First Missing Positive
- 10分钟带你光速入门运维工具之-Puppe
- 敏捷合同VS传统合同
- JavaScript DOM操作
- ORA-04043艰难的解决之路
- Adapter.notifyDataSetChanged()数据改变却不刷新的原因
- Python安装常见问题(1):zipimport.ZipImportError: can't decompress data
- 剑指offer 面试题3:二维数组中的查找
- Android像素(px)与dip