问题
给定一个包含 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;
}
}