代码改变世界

leetcode - Longest Consecutive Sequence

2013-04-26 15:19  张汉生  阅读(212)  评论(0编辑  收藏  举报

题目描述:点击此处

这道题还是排序了,没能在O(n)的时间内解决,想了一个基于模的方法好久还没出结果,看网上都是用哈希表做得,个人不认同哈希表的访问时间为O(1)。

 1 class Solution {
 2 public:
 3   int longestConsecutive(vector<int> &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<int>::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 };