rustgym/leetcode/
_128_longest_consecutive_sequence.rs

1struct Solution;
2use std::collections::HashSet;
3use std::iter::FromIterator;
4
5impl Solution {
6    fn longest_consecutive(nums: Vec<i32>) -> i32 {
7        if nums.is_empty() {
8            return 0;
9        }
10        let hs: HashSet<i32> = HashSet::from_iter(nums);
11        let mut res = 0;
12        for &x in &hs {
13            if hs.contains(&(x - 1)) {
14                continue;
15            }
16            let mut i = 1;
17            while hs.contains(&(x + i)) {
18                i += 1;
19                res = res.max(i);
20            }
21        }
22        res
23    }
24}
25
26#[test]
27fn test() {
28    let nums = vec![100, 4, 200, 1, 3, 2];
29    let res = 4;
30    assert_eq!(Solution::longest_consecutive(nums), res);
31}