fn find_second_largest(vec: &[i32]) -> Option<i32> {
if vec.len() < 2 {
return None;
}
let mut largest = i32::MIN;
let mut second_largest = i32::MIN;
for &num in vec {
if num > largest {
second_largest = largest;
largest = num;
} else if num > second_largest && num < largest {
second_largest = num;
}
}
if second_largest == i32::MIN {
None // This means all numbers are the same
} else {
Some(second_largest)
}
}
fn main() {
let vec = vec![3, 14, 4, 1, 5, 90, 2, 6, 85, 7];
if let Some(second_largest) = find_second_largest(&vec) {
println!("The second largest number is {}", second_largest);
} else {
println!("Not enough unique numbers to determine the second largest.");
}
}
/*
run:
The second largest number is 85
*/