题目描述:点击
这道题还是排序了,没能在O(n)的时间内解决,想了一个基于模的方法好久还没出结果,看网上都是用哈希表做得,个人不认同哈希表的访问时间为O(1)。
1 class Solution { 2 public: 3 int longestConsecutive(vector &num) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 if (num.size()<=0) 7 return 0; 8 sort(num.begin(),num.end()); 9 int len = 1;10 int max = 1;11 int last = *(num.begin());12 for (vector ::iterator ii= num.begin()+1; ii != num.end(); ii++){13 if (*ii == last)14 continue;15 else if (*ii== last +1){16 len ++;17 max = max >= len? max:len;18 last++;19 }20 else {21 last= *ii;22 len = 1;23 }24 }25 return max;26 }27 };