题解 | #顺时针打印矩阵#
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
import java.util.*;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> rest = new ArrayList<>();
if(matrix.length == 0){
return rest;
}
//上左边界
int up = 0;
int left = 0;
//下右边界
int down = matrix.length -1;
int right = matrix[0].length -1;
while(left <= right && up <= down){
//上边界从左到右遍历
for(int i = left;i <= right;i++){
rest.add(matrix[up][i]);
}
//上边界向下
up++;
if(up > down){
break;
}
//右边界从上到下遍历
for(int i = up;i <= down;i++){
rest.add(matrix[i][right]);
}
//右边界向左
right--;
if(left > right){
break;
}
//下边界从右到左遍历
for(int i = right;i >= left;i--){
rest.add(matrix[down][i]);
}
//下边界向上
down--;
if(up > down){
break;
}
//左边界从下到上遍历
for(int i = down;i >= up;i--){
rest.add(matrix[i][left]);
}
//左边界向右
left++;
if(left > right){
break;
}
}
return rest;
}
}