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.
Solution
既然不能排序,那就用 /(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;
}
};
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/289982.html