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.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Solution {
    public int longestConsecutive(int[] num) {
        int length = 0;
        if(num.length > 0){
            length = 1;
            Map<Integer, Integer> lens = new HashMap<Integer, Integer>();
            Map<Integer, Integer> visited = new HashMap<Integer, Integer>();
            for(int i = 0; i < num.length; ++i){
                lens.put(num[i], 1);
                visited.put(num[i], 0);
            }
             
            for(int i = 0; i < num.length; ++i){
                if(visited.get(num[i]) != 0)
                    continue;
                else{
                    visited.put(num[i], 1);
                    if(lens.containsKey(num[i] - 1)){
                        if(visited.get(num[i] - 1) == 0){
                            int templength = lens.get(num[i] - 1) + lens.get(num[i]);
                            lens.put(num[i], templength);
                            lens.put(num[i] - lens.get(num[i] - 1), templength);
                            length = (length < templength)? templength: length;
                            visited.put(num[i] - 1, 1);
                        }
                    }
                    if(lens.containsKey(num[i] + 1)){
                        int templength = lens.get(num[i] + 1) + lens.get(num[i]);
                        lens.put(num[i] - lens.get(num[i]) + 1, templength);
                        lens.put(num[i] + lens.get(num[i] + 1), templength);
                        length = (length < templength)? templength: length;
                    }                  
                }
            }
        }
        return length;
    }
}

  

leetcode--Longest Consecutive Sequence

上一篇:leetcode--Clone Graph


下一篇:[iOS开发] UIKit Dynamics