Given an unsorted array of integers nums
, return the length of the longest consecutive elements sequence.
You must write an algorithm that runs in \(O(n)\) time.
既然不能排序,那就用 \(set\) 将元素全部存进去。从所有可能序列中的最小开始遍历,逐次递增,然后更新最大值
class Solution { private: unordered_set<int> s; int ans=0; public: int longestConsecutive(vector<int>& nums) { for(auto ele:nums){ s.insert(ele); } for(auto ele:nums){ int cur = ele; if(!s.count(cur-1)){ int cnt=1; while(s.count(cur+1)){ cur++;cnt++; } ans=max(ans, cnt); } } return ans; } };