题解 | #顺时针打印矩阵# 找规律 循环 右下左上
顺时针打印矩阵
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; } }