lintcode-最長連續子序列
阿新 • • 發佈:2019-02-02
給定一個未排序的整數陣列,找出最長連續序列的長度。
樣例給出陣列[100, 4, 200, 1, 3, 2],這個最長的連續序列是 [1, 2, 3, 4],返回所求長度 4
給出陣列[ 4, 4, 1, 3,2, 2],這個最長的連續序列是 [1, 2, 3, 4],返回所求長度 4
說明 要求你的演算法複雜度為O(n)
注意:set不能插入相同元素(set的底層實現是紅黑樹),set的插入是平均logm,遍歷過程是n,所以O(nlogm),所以該題並沒有符合要求,執行時間是47ms
class Solution { public: int longestConsecutive(vector<int> &num) { set<int> s; for(auto e:num) s.insert(e); int last=*s.begin(); s.erase(s.begin()); int count=1,maxp=1; for(auto e:s){ if(last==e-1){ ++count; }else{ count=1; } last=e; maxp=max(count,maxp); } return maxp; } };