Lintcode189 First Missing Positive solution 题解
2018-01-12 01:45
253 查看
【题目描述】
Given an unsorted integer array, find the first missing positive integer.
给出一个无序的整数数组,找出其中没有出现的最小正整数。
【题目链接】
www.lintcode.com/en/problem/first-missing-positive/
【题目解析】
此题可用桶排序。桶排序通常需要按照一定规则将值放入桶中,一般需要额外的 O(n) 空间,咋看一下似乎不太适合在这道题中使用,但是若能设定一定的规则原地交换原数组的值呢?这道题的难点就在于这种规则的设定。
设想我们对给定数组使用桶排序的思想排序,第一个桶放1,第二个桶放2,如果找不到相应的数,则相应的桶的值不变(可能为负值,也可能为其他值)。
那么怎么才能做到原地排序呢?即若 A[i]=x, 则将 x 放到它该去的地方 - A[x−1]=x, 同时将原来 A[x−1] 地方的值交换给 A[i].
排好序后遍历桶,如果不满足 f[i]=i+1, 那么警察叔叔就是它了!如果都满足条件怎么办?那就返回给定数组大小再加1呗。
【参考答案】
www.jiuzhang.com/solutions/first-missing-positive/
Given an unsorted integer array, find the first missing positive integer.
给出一个无序的整数数组,找出其中没有出现的最小正整数。
【题目链接】
www.lintcode.com/en/problem/first-missing-positive/
【题目解析】
此题可用桶排序。桶排序通常需要按照一定规则将值放入桶中,一般需要额外的 O(n) 空间,咋看一下似乎不太适合在这道题中使用,但是若能设定一定的规则原地交换原数组的值呢?这道题的难点就在于这种规则的设定。
设想我们对给定数组使用桶排序的思想排序,第一个桶放1,第二个桶放2,如果找不到相应的数,则相应的桶的值不变(可能为负值,也可能为其他值)。
那么怎么才能做到原地排序呢?即若 A[i]=x, 则将 x 放到它该去的地方 - A[x−1]=x, 同时将原来 A[x−1] 地方的值交换给 A[i].
排好序后遍历桶,如果不满足 f[i]=i+1, 那么警察叔叔就是它了!如果都满足条件怎么办?那就返回给定数组大小再加1呗。
【参考答案】
www.jiuzhang.com/solutions/first-missing-positive/
相关文章推荐
- #189 First Missing Positive
- Leet Code 41 First Missing Positive - Java
- LintCode_189 First Missing Positive
- CODE 92: First Missing Positive
- [LeetCode] First Missing Positive
- LeetCode First Missing Positive
- 41. First Missing Positive
- First Missing Positive
- LeetCode 112 First Missing Positive
- LeetCode: First Missing Positive
- 41 First Missing Positive
- LeetCode——No.41 First Missing Positive
- LeetCode_First Missing Positive
- [LeetCode]First Missing Positive
- LeetCode 41 First Missing Positive
- First Missing Positive
- Lintcode154 Regular Expression Matching solution 题解
- LeetCode First Missing Positive
- Leetcode:First Missing Positive
- First Missing Positive