您的位置:首页 > 其它

最长连续序列

2015-10-09 21:23 260 查看
给定一个未排序的整数数组,找出最长连续序列的长度。

样例

给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 4

说明 要求你的算法复杂度为O(n)

class Solution {
public:
/**
* @param nums: A list of integers
* @return an integer
*/
int longestConsecutive(vector<int> &num) {
// write you code here
int n = num.size();
int result = 0;
set<int> buf;
for (int i = 0; i < n; i++)
{
buf.insert(num[i]);
}

for (int i = 0; i < n; i++)
{
int left = maxLen(0, num[i], buf);
int right = maxLen(1, num[i]+1, buf);
if (left+right > result)
{
result = left + right;
}
}

return result;
}
private:
int maxLen(int flag, int val, set<int> &buf)
{
int result = 0;
while (buf.find(val) != buf.end())
{
result++;
buf.erase(val);
if (flag == 0)
{
val--;
}
else
{
val++;
}
}

return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: