MST
星途 面试题库

面试题:Rust数组切片的复杂场景应用

给定一个二维数组切片 `let matrix: &[&[i32]] = &[&[1, 2, 3], &[4, 5, 6], &[7, 8, 9]];`,编写一个函数,实现对该二维数组切片进行转置(即将行和列互换),并返回转置后的结果。要充分考虑Rust的内存安全机制,确保代码高效且正确。
33.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn transpose(matrix: &[&[i32]]) -> Vec<Vec<i32>> {
    let rows = matrix.len();
    let cols = matrix[0].len();
    let mut transposed = vec![vec![0; rows]; cols];
    for i in 0..rows {
        for j in 0..cols {
            transposed[j][i] = matrix[i][j];
        }
    }
    transposed
}

你可以这样调用这个函数:

fn main() {
    let matrix: &[&[i32]] = &[&[1, 2, 3], &[4, 5, 6], &[7, 8, 9]];
    let result = transpose(matrix);
    println!("{:?}", result);
}