LeetCode算法网站算法题
https://leetcode-cn.com/problems/longest-consecutive-sequence/
class Solution
{
public:
int longestConsecutive(vector<int>& nums)
{
unordered_set<int> num_set;
for (const int& num : nums)
{
num_set.insert(num);
}
int longestStreak = 0;
for (const int& num : num_set)
{
if (!num_set.count(num - 1))//如果没有找到比当前数小1的数的时候执行其中代码,无论是到了最后一个数还是压根就没有,都可以进行判断,集合的优势
{
int currentNum = num;//记录当前数
int currentStreak = 1;//记录当前的最小子序列长度,初始为1
while (num_set.count(currentNum + 1))//如果找到了比当前数大一的数执行循环
{
currentNum = currentNum + 1;//将当前数改变为大一个的数
currentStreak = currentStreak + 1;//将当前数的最长连续子序列加一
}
longestStreak = max(longestStreak, currentStreak);
}
}
return longestStreak;
}
};