首页 > 代码库 > [LeetCode]
[LeetCode]
class Solution {//用set判断一个元素是否存在于集合中O(logn)。用到的一个优化是连续的x个数对应的序列长度都是一样的,可以通过判断元素是否遍历过来避免查找。没有这一步会超时。有的也用<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px; background-color: rgb(245, 250, 226);">unordered_set代替set,据说这是hash表,O(1),更快。</span> public: int longestConsecutive(vector<int> &v) { if(v.size()==0)return 0; set<int>st,st2; set<int>::iterator bg,ed; int i=0,tmp1,tmp2,ans=0; for(i=0;i<v.size();++i) st.insert(v[i]); for(bg=st.begin(),ed=st.end();bg!=ed;bg++){ if(st2.find(*bg)!=st2.end())continue; tmp1=*bg-1; while(st.find(tmp1)!=ed)st2.insert(tmp1--); tmp2=*bg+1; while(st.find(tmp2)!=ed)st2.insert(tmp2++); tmp1=tmp2-tmp1-1; if(tmp1>ans) ans=tmp1; } return ans; } };
[LeetCode]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。