LeetCode-Longest Consecutive Sequence

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

 

posted on 2015-05-12 22:59  linxiong1991  阅读(101)  评论(0编辑  收藏  举报

导航