标签:cnt cur Sequence int nums ele ans 128 Consecutive
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;
}
};
标签:cnt,cur,Sequence,int,nums,ele,ans,128,Consecutive 来源: https://www.cnblogs.com/xinyu04/p/16701806.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。