leetcode 23:longest-consecutive-sequence
阿新 • • 發佈:2020-08-16
題目描述
給定一個無序的整數型別陣列,求最長的連續元素序列的長度。 例如: 給出的陣列為[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 returncount; 26 }