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

LeetCode-Longest Consecutive Sequence

时间:2015-05-13 00:42:12      阅读:100      评论: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.

Your algorithm should run in O(n) complexity.

 

用set保存所有元素,遍历数组中的每个元素,在set中查询是否有当前元素的左边元素和右边元素。

代码如下:

public int longestConsecutive(int[] nums) {
        if(nums == null) return 0;
        if(nums.length < 2) return nums.length;
        
        Set<Integer> set = new HashSet<Integer>();
        for(int curr : nums) set.add(curr);
        
        int max = 1;//连续的最长长度
        for(int curr:nums) {
            int left = curr-1;
            int right = curr+1;
            int count = 1;
            while(set.contains(left)) {
                set.remove(left);
                count++;
                left--;
            }
            while(set.contains(right)) {
                set.remove(right);
                count++;
                right++;
            }
            max = max > count ? max : count;
        }
        return max;
    }

 

LeetCode-Longest Consecutive Sequence

标签:

原文地址:http://www.cnblogs.com/linxiong/p/4498996.html

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