정수형 벡터 데이터에서 연속되는(1 차이) 숫자들의 가장 긴 길이를 구하면 된다.
그리고 그 때 알고리즘은 오직 O(n)의 시간복잡도를 가져야 한다는 제한 사항이 있다.
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> hashTable(nums.begin(), nums.end());
int maxLength{0};
for (int &num : nums)
{
if (hashTable.count(num) == 0)
{
continue;
}
int left{num - 1};
while (0 < hashTable.count(left))
{
hashTable.erase(left);
left--;
}
int right{num + 1};
while (0 < hashTable.count(right))
{
hashTable.erase(right);
right++;
}
hashTable.erase(num);
maxLength = max(maxLength, right - left - 1);
}
return maxLength;
}
};