How to find the second largest number in a vector with Rust

1 Answer

0 votes
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
 
*/

 



answered Jan 19, 2025 by avibootz
edited Jan 19, 2025 by avibootz
...