螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
题解
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
//按层走
List<Integer> res = new ArrayList<>();
if(matrix ==null || matrix[0].length == 0 || matrix.length == 0){
return res;
}
int left = 0;
int right = matrix[0].length - 1;
int top = 0;
int bottom = matrix.length - 1;
while(left <= right && top <= bottom){
//寻找上; 123
for(int column = left; column <= right; ++column){
res.add(matrix[top][column]);
}
//寻找右; 69
for(int row = top + 1; row <= bottom; ++row){
res.add(matrix[row][right]);
}
//再次判断是否满足条件
if(left < right && top < bottom){
//从下, 注意column>= left 87
for(int column = right - 1; column >= left; --column){
res.add(matrix[bottom][column]);
}
//从左; 4
for(int row = bottom - 1 ; row > top; --row){
res.add(matrix[row][left]);
}
}
//往里走
left++;
right--;
top++;
bottom--;
}
return res;
}
}