第一题:
Longest Consecutive Sequence
分析:直接用HASH,访问之后删除。
代码:
class Solution
{
public:
set<int> flag;
int findBound(int n, bool asc)
{
int ans = 0;
set<int>::iterator iter;
while ((iter = flag.find(n)) != flag.end())
{
flag.erase(iter);
ans++;
if (asc) n--;
else n++;
}
return ans;
}
int longestConsecutive(vector<int> &num)
{
int i, ans = 0;
flag.clear();
for (i = 0; i < num.size(); i++)
flag.insert(num[i]);
for (i = 0; i < num.size(); i++)
ans = max(findBound(num[i], true) + findBound(num[i]+1, false), ans);
return ans;
}
};