use std::collections::HashSet;
fn longest_consecutive(nums: Vec<i32>) -> i32 {
let num_set: HashSet<i32> = nums.into_iter().collect();
let mut longest_streak = 0;
for &num in &num_set {
// Check if it's the start of a sequence
if !num_set.contains(&(num - 1)) {
let mut current_num = num;
let mut current_streak = 1;
// Count the length of the sequence
while num_set.contains(&(current_num + 1)) {
current_num += 1;
current_streak += 1;
}
longest_streak = longest_streak.max(current_streak);
}
}
longest_streak
}
fn main() {
let nums = vec![680, 4, 590, 3, 1, 2];
println!("Longest consecutive sequence length: {}", longest_consecutive(nums));
}
/*
run:
Longest consecutive sequence length: 4
*/