码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode:Longest Consecutive Sequence

时间:2015-09-17 17:29:34      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

时间复杂度要求o(n)  不能用排序 就用map来记录元素,然后顺序扫描一遍元素,对每个未使用的元素左右扩张。

 1 class Solution {
 2 public:
 3     int longestConsecutive(vector<int>& nums) {
 4         unordered_map<int,bool> used;
 5     
 6     for(auto i:nums) used[i]=false;
 7     
 8     int longest=0;
 9     
10     for(auto i:nums)
11     {
12         if(used[i]) continue;
13         
14         int length=1;
15         used[i]=true;
16         
17         //向增长的方向开始 
18         
19         for(int j=i+1;used.find(j)!=used.end();j++)
20         {
21           length++;
22           used[j]=true;
23          }
24         
25         //向减少的方向开始
26         for(int j=i-1;used.find(j)!=used.end();j--)
27         {
28           length++;
29           used[j]=true;
30          }
31          
32         longest=max(longest,length); 
33   
34     }
35     
36     return longest;
37     }
38 };

 

LeetCode:Longest Consecutive Sequence

标签:

原文地址:http://www.cnblogs.com/xiaoying1245970347/p/4816734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!