1.Description
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
2.Example
输入: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]
3.Solution
一层一层地向内遍历,通过四个for循环分别遍历上、右、下、左。
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> list = new ArrayList<Integer>();
int m = matrix.length;
int n = matrix[0].length;
int up = 0,down = m-1,left = 0,right = n-1;
while(left<=right&&up<=down) {
for(int j = left;j<=right;j++) {
list.add(matrix[up][j]);
}
for(int i = up+1;i<=down;i++) {
list.add(matrix[i][right]);
}
if(left<right&&up<down) {
for(int j = right-1;j>left;j--) {
list.add(matrix[down][j]);
}
for(int i = down;i>up;i--) {
list.add(matrix[i][left]);
}
}
left++;
right--;
up++;
down--;
}
return list;
}
}