您的位置:首页 > 产品设计 > UI/UE

#leetcode#Longest Consecutive Sqeuence

2015-06-11 12:25 302 查看
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
.

Your algorithm should run in O(n) complexity.

这题思路和word ladder有异曲同工之妙, 都是抽象成图来用DFS, 每个数字就是顶点, 相邻数字之间有一条边, Code Ganker Rocks!

public class Solution {
public int longestConsecutive(int[] nums) {
if(nums == null || nums.length == 0)
return 0;
int res = Integer.MIN_VALUE;
Set<Integer> set = new HashSet<Integer>();
for(int i : nums){
set.add(i);
}
while(!set.isEmpty()){
Iterator iter = set.iterator();
int item = (Integer)iter.next();
set.remove(item);
int len = 1;
int i = item - 1;
while(set.contains(i)){
len++;
set.remove(i--);
}
i = item + 1;
while(set.contains(i)){
len++;
set.remove(i++);
}
res = Math.max(len, res);
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode