- 题目描述:
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素.1
- 代码部分:
public List<Integer> spiralOrder(int matrix) {
List<Integer> res = new ArrayList<>();
int n = matrix.length;
if(n<=0) return res;
int m = matrix[0].length;
int l = 0;
int r = m-1;
int up = 0;
int down = n-1;
while(n> 1 && m>1){//n表示行的长度,m表示列的长度
for(int i = 0;i<m-1;i++){
res.add(matrix[up][l+i]);
}
for(int i = 0;i<n-1;i++){
res.add(matrix[up+i][r]);
}
for(int i = 0;i<m-1;i++){
res.add(matrix[down][r-i]);
}
for(int i = 0;i<n-1;i++){
res.add(matrix[down - i][l]);
}
l++;
r--;
up++;
down--;
n-=2;
m -= 2;
}
if(n == 1){// n >=m,最后会剩一行
while(l<=r){
res.add(matrix[up][l]);
l++;
}
}
if(m == 1 && n != 1){//m > n,最后会剩一列,注意要将n==1排除
while(up<=down){
res.add(matrix[up][l]);
up++;
}
}
return res;
}
https://leetcode-cn.com/problems/spiral-matrix/ ↩︎