#leetcode#Longest Consecutive Sqeuence

来源:互联网 发布:2017淘宝直通车 编辑:程序博客网 时间:2024/06/10 06:32

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;    }}


0 0