## 128. Longest Consecutive Sequence

Given an unsorted array of integers `nums`, return the length of the longest consecutive elements sequence.

Follow up: Could you implement the `O(n)` solution?

Example 1:

```Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is `[1, 2, 3, 4]`. Therefore its length is 4.
```

Example 2:

```Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9
```

Constraints:

• `0 <= nums.length <= 104`
• `-109 <= nums[i] <= 109`

## Rust Solution

``````struct Solution;
use std::collections::HashSet;
use std::iter::FromIterator;

impl Solution {
fn longest_consecutive(nums: Vec<i32>) -> i32 {
if nums.is_empty() {
return 0;
}
let hs: HashSet<i32> = HashSet::from_iter(nums);
let mut res = 0;
for &x in &hs {
if hs.contains(&(x - 1)) {
continue;
}
let mut i = 1;
while hs.contains(&(x + i)) {
i += 1;
res = res.max(i);
}
}
res
}
}

#[test]
fn test() {
let nums = vec![100, 4, 200, 1, 3, 2];
let res = 4;
assert_eq!(Solution::longest_consecutive(nums), res);
}
``````

Having problems with this solution? Click here to submit an issue on github.