您的位置:首页 > 其它

LeetCode "First Missing Positive"

2014-07-28 12:27 330 查看
Similar with "Longest Consecutive Sequence". Another usage to hashset.

Take care of corner cases!

class Solution {
public:
int firstMissingPositive(int A[], int n) {
if (n == 0) return 1;
unordered_set<int> set;
int minPos = std::numeric_limits<int>::max();
for (int i = 0; i < n; i ++)
{
int n = A[i];
if (n >= 0)
{
set.insert(n);
minPos = std::min(minPos, n);
}
}
if (minPos > 1) return 1;

int p = std::numeric_limits<int>::max();
if (set.size() == 0) return 1;

for (int i = 0; i < n; i++)
{
int n = A[i];
if (n < 0) continue;
int n1 = n - 1;
int n2 = n + 1;
if (n1 > 0)
{
if (set.find(n1) == set.end())
p = std::min(p, n1);
}
if (n2 > 0)
{
if (set.find(n2) == set.end())
p = std::min(p, n2);
}
}
return p;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: