1. 程式人生 > 實用技巧 >leetcode 23:longest-consecutive-sequence

leetcode 23:longest-consecutive-sequence

題目描述

給定一個無序的整數型別陣列,求最長的連續元素序列的長度。 例如: 給出的陣列為[100, 4, 200, 1, 3, 2], 最長的連續元素序列為[1, 2, 3, 4].返回這個序列的長度:4
你需要給出時間複雜度在O(n)之內的演算法 題目分析: set會給放入的陣列去重,本題是根據set的特性解題的。 程式碼如下:
 1  int longestConsecutive(vector<int>& num) {
 2        if(num.size() == 0)
 3            return 0;
 4         set<int
> st(num.begin(),num.end()); 5 int count = 1; 6 for(int i = 0;i < num.size();i++) 7 { 8 int temp = num[i]; 9 if(st.count(temp) == 0) 10 continue; 11 int l = temp - 1; 12 int r = temp + 1; 13 while
(st.count(l) != 0) 14 { 15 st.erase(l); 16 l--; 17 } 18 while(st.count(r) != 0) 19 { 20 st.erase(r); 21 r++; 22 } 23 count = max(count,r-l-1); 24 } 25 return
count; 26 }