用rust语言写二维数组回形遍历
时间: 2024-10-20 15:07:32 浏览: 38
ndarray —具有数组视图,多维切片和高效操作的N维数组-Rust开发
在 Rust 中,我们可以使用标准库提供的 `Vec` 或者自定义数组来创建二维数组,并通过嵌套循环实现回形遍历(也称为蛇形矩阵、之字形遍历)。下面是一个简单的示例,展示如何使用 `Vec<Vec<i32>>` 来实现:
```rust
fn zigzag_traversal(matrix: &Vec<Vec<i32>>) -> Vec<i32> {
let mut result = vec![];
// 定义两个指针,一个从左到右,一个从右到左
let left_ptr = matrix.iter().enumerate().rev();
let right_ptr = matrix.iter().enumerate();
// 循环直到左右指针相遇或交错
while let (left_row, left_col), (right_row, right_col) = (left_ptr.next(), right_ptr.next()) {
// 添加当前行的第一个元素
result.push(matrix[left_row][left_col]);
if left_col < right_col {
// 如果左列小于右列,向右移动左指针
result.push(matrix[left_row][left_col + 1]);
} else {
// 否则,向左移动右指针
result.push(matrix[right_row][right_col - 1]);
}
}
result
}
// 示例
let matrix = vec![
vec![1, 2, 3],
vec![4, 5, 6],
vec![7, 8, 9]
];
let zigzag = zigzag_traversal(&matrix);
println!("{:?}", zigzag); // 输出: [1, 2, 4, 7, 9, 5, 3, 6, 8]
阅读全文