Fork me on GitHub

Longest Consecutive Sequence

Linkage

https://leetcode.com/problems/longest-consecutive-sequence/description/

Code

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
class Solution {
public int longestConsecutive(int[] nums) {
int lens = nums.length;
if (lens == 0 || lens == 1) return lens;

Set<Integer> number_set = new HashSet<Integer>();
for (int item : nums) {
number_set.add(item);
}
int index = 0;
int max_lens = 0;
while (!number_set.isEmpty() && index < lens) {
int item = nums[index];
index += 1;
if (!number_set.contains(item)) continue;

int smaller = item - 1, larger = item + 1;
int current_lens = 1;
number_set.remove(item);
while(number_set.contains(smaller)) { number_set.remove(smaller); smaller -= 1; current_lens += 1; }
while(number_set.contains(larger)) { number_set.remove(larger); larger += 1; current_lens += 1;}
max_lens = Math.max(max_lens, current_lens);
}
return max_lens;
}

}