本文共 1508 字,大约阅读时间需要 5 分钟。
数组
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
例如:
输入如下 4 X 4 矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
import java.util.ArrayList;public class Solution { public ArrayListprintMatrix(int[][] matrix) { // list 记录打印顺序 ArrayList list = new ArrayList<>(); int row = matrix.length; // 总行数 int col = matrix[0].length; // 总列数 // 循环打印每一圈,count 记录圈数 for (int count = 0; 2 * count < row && 2 * count < col; count++) { // 本圈行数 int endX = row - 1 - count; // 本圈列数 int endY = col - 1 - count; // 从左到右 for (int i = count; i <= endY; i++) { list.add(matrix[count][i]); } // 从上到下 for (int i = count + 1; i <= endX; i++) { list.add(matrix[i][endY]); } // 从右到左,如果只有一行,要避免重复打印 if (endX > count) { for (int i = endY - 1; i >= count; i--) { list.add(matrix[endX][i]); } } // 从下到上,如果只有一列,要避免重复打印 if (endY > count) { for (int i = endX - 1; i > count; i--) { list.add(matrix[i][count]); } } } return list; }}
转载地址:http://jyjvb.baihongyu.com/