题目:
代码(首刷看解析 2024年3月2日):
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int maxlen = 0;
int curlen = 0;
int left = 0, right = 0;
unordered_map<int, int> NumToLength;
for (auto& num : nums) {
if (NumToLength[num]) continue;
left = NumToLength[num - 1];//如果没有会默认为0
right = NumToLength[num + 1];
curlen = left + right + 1;
if (curlen > maxlen) maxlen = curlen;
NumToLength[num - left] = curlen;
NumToLength[num + right] = curlen;
NumToLength[num] = curlen;
}
return maxlen;
}
};