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

Longest Consecutive Sequence

时间:2014-09-19 12:09:45      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   java   ar   for   2014   div   

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.

答案

public class Solution {
    public int longestConsecutive(int[] num) {
        if(num==null||num.length==0)
        {
            return 0;
        }
        int result=1;
        HashSet<Integer> set=new HashSet<Integer>();
        Map<Integer,Integer>map=new HashMap<Integer,Integer>();
        for(int element:num)
        {
            set.add(element);
        }
        for(int element:num)
        {
            if(map.containsKey(element))
            {
                continue;
            }
            int end=element;
            for(end=element+1;set.contains(end)&&!map.containsKey(end);end++);
            int len=end-element;
            if(map.containsKey(end))
            {
                len+=map.get(end);
            }
            result=Math.max(len,result);
            for(int i=element;i<end;i++,len--)
            {
                map.put(i,len);
            }
        }
        return result;
    }
}

Longest Consecutive Sequence

标签:style   blog   color   io   java   ar   for   2014   div   

原文地址:http://blog.csdn.net/jiewuyou/article/details/39394841

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