1 class Solution { 2 public: 3 int longestConsecutive(vector<int>& nums) { 4 unordered_set<int> si; 5 for(int &i: nums) 6 si.insert(i); 7 8 int res=0, cur=0; 9 for(int i:nums){ 10 if(si.find(i-1)!=si.end()) 11 continue; 12 int p=i; 13 while(si.find(p)!=si.end()){ 14 cur++; 15 p++; 16 } 17 res=max(res,cur); 18 cur=0; 19 } 20 return res; 21 } 22 };
用个哈希表来存放数组,便于查找。在查找时,只判定i-1不在哈希表中的元素为起点的连续序列