问题
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
例子

思路

代码
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
if(matrix.length==0) return new ArrayList<Integer>();
int l=0,u=0,d=matrix.length-1,r=matrix[0].length-1;
List<Integer> list = new ArrayList<>();
while(true) {
//while(u<=d && l<=r) {
for(int i=l; i<=r; i++) list.add(matrix[u][i]);
if(++u>d) break;
for(int i=u; i<=d; i++) list.add(matrix[i][r]);
if(--r<l) break;
for(int i=r; i>=l; i--) list.add(matrix[d][i]);
if(--d<u) break;
for(int i=d; i>=u; i--) list.add(matrix[i][l]);
if(++l>r) break;
}
return list;
}
}

本文介绍了一种矩阵螺旋遍历的算法实现,通过定义四个边界,每次遍历一个边界并更新边界值,直到所有元素被遍历。适用于解决二维数组顺时针螺旋顺序输出的问题。
497

被折叠的 条评论
为什么被折叠?



