MST

星途 面试题库

面试题:Rust 控制流中的条件判断与循环嵌套优化

假设你有一个二维数组,数组中的每个元素是一个整数。要求使用 Rust 编写代码,通过控制流和循环嵌套来找出所有满足特定条件(例如该元素大于其所在行的平均值)的元素,并统计其数量。请详细说明你的实现思路,并优化代码以提高效率。
32.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 实现思路
    • 首先,遍历二维数组的每一行。
    • 对于每一行,计算该行元素的总和,并通过总和除以该行元素数量得到平均值。
    • 然后,再次遍历该行元素,判断每个元素是否大于该行的平均值。如果是,则增加满足条件元素的计数器。
  2. 代码实现
fn main() {
    let matrix = vec![
        vec![1, 3, 5],
        vec![2, 4, 6],
        vec![7, 8, 9]
    ];
    let mut count = 0;
    for row in &matrix {
        let sum: i32 = row.iter().sum();
        let avg = sum as f32 / row.len() as f32;
        for &num in row {
            if num as f32 > avg {
                count += 1;
            }
        }
    }
    println!("满足条件的元素数量: {}", count);
}
  1. 优化思路及代码
    • 优化思路:上述代码每次都计算整行的平均值,这在某些情况下可能效率不高。可以在遍历行元素时,同时计算总和和满足条件的元素数量,最后再判断是否满足条件。
    • 优化后代码
fn main() {
    let matrix = vec![
        vec![1, 3, 5],
        vec![2, 4, 6],
        vec![7, 8, 9]
    ];
    let mut count = 0;
    for row in &matrix {
        let mut sum = 0;
        let mut local_count = 0;
        for &num in row {
            sum += num;
            local_count += (num as f32 > (sum as f32 / (local_count + 1) as f32)) as i32;
        }
        count += local_count;
    }
    println!("满足条件的元素数量: {}", count);
}

这样,在遍历过程中就可以实时判断元素是否满足条件,减少了一次对整行的遍历操作,提高了效率。