题解 | #顺时针打印矩阵# 找规律 循环 右下左上
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
import java.util.*;
import java.util.ArrayList;
public class Solution {
public static ArrayList<Integer> printMatrix(int[][] matrix) {
ArrayList<Integer> result = new ArrayList<>();
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return result;
}
//横向步数
int lateral = matrix[0].length;
//纵向步数
int vertical = matrix.length - 1;
//当前坐标
int x = 0, y = -1;
int num = lateral * (vertical + 1);
while (result.size() != num) {
//向右
for (int i = 0; i < lateral; i++) {
if (result.size() == num) {
break;
}
result.add(matrix[x][++y]);
}
lateral--;
//向下
for (int i = 0; i < vertical; i++) {
if (result.size() == num) {
break;
}
result.add(matrix[++x][y]);
}
vertical--;
//向左
for (int i = 0; i < lateral; i++) {
if (result.size() == num) {
break;
}
result.add(matrix[x][--y]);
}
lateral--;
//向上
for (int i = 0; i < vertical; i++) {
if (result.size() == num) {
break;
}
result.add(matrix[--x][y]);
}
vertical--;
}
return result;
}
}
