免费自助建站代理,广州市网页设计制作,wordpress手册插件,福州网站快速排名题目
给你一个 m 行 n 列的矩阵 matrix #xff0c;请按照 顺时针螺旋顺序 #xff0c;返回矩阵中的所有元素。
示例
示例 1 输入#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]
输出#xff1a;[1,2,3,6,9,8,7,4,5]
示例 2 输入#xff1a;matrix [[1,2,3,4],[5,6,…题目
给你一个 m 行 n 列的矩阵 matrix 请按照 顺时针螺旋顺序 返回矩阵中的所有元素。
示例
示例 1 输入matrix [[1,2,3],[4,5,6],[7,8,9]]
输出[1,2,3,6,9,8,7,4,5]
示例 2 输入matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出[1,2,3,4,8,12,11,10,9,5,6,7]
提示
m matrix.length
n matrix[i].length
1 m, n 10
-100 matrix[i][j] 100思路 深搜方向旋转。需要特别处理在最左边往上搜索的情况。 AC代码
impl Solution {pub fn dfs(v: VecVeci32, vis: mut VecVecbool, x: i32, y: i32) - Veci32 {let x_len v.len() as i32;let y_len v[0].len() as i32;let mut res: Veci32 Vec::new();if x 0 || x x_len || y 0 || y y_len || vis[x as usize][y as usize] {return res;}vis[x as usize][y as usize] true;let mut res1: Veci32 Vec::new();let mut res2: Veci32 Vec::new();let mut res3: Veci32 Vec::new();let mut res4: Veci32 Vec::new();res1 match x 1 (y 0 || (y 1 vis[x as usize][y as usize - 1])) !vis[x as usize - 1][y as usize]{true Solution::dfs(v, vis, x - 1, y),_ Solution::dfs(v, vis, x, y 1)};res2 Solution::dfs(v, vis, x 1, y);res3 Solution::dfs(v, vis, x, y - 1);res4 Solution::dfs(v, vis, x - 1, y);res.push(v[x as usize][y as usize]);res.extend(res1);res.extend(res2);res.extend(res3);res.extend(res4);res}pub fn spiral_order(v: VecVeci32) - Veci32 {let x_len v.len();let y_len v[0].len();let mut vis: VecVecbool vec![vec![false; y_len]; x_len];Solution::dfs(v, mut vis, 0 , 0)}
}