顺时针打印矩阵

来源:互联网 发布:华为交换机端口命名 编辑:程序博客网 时间:2024/06/05 06:56

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.


package matrix;import java.util.ArrayList;public class Solution {public static ArrayList<Integer> printMatrix(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;ArrayList<Integer> list = new ArrayList<Integer>();if (m == 0 && n == 0) {return list;}if (m == 1) {for (int j = 0; j < n; j++) {list.add(matrix[0][j]);}return list;}if (n == 1) {for (int i = 0; i < m; i++) {list.add(matrix[i][0]);}return list;}int startx = 0;int starty = 0;int endx = m - 1;int endy = n - 1;while (startx <= endx && starty <= endy) {if(startx==endx){for(int j=starty;j<=endy;j++){list.add(matrix[startx][j]);}return list;}if(starty==endy){for(int i=startx;i<=endx;i++){list.add(matrix[i][starty]);}return list;}for (int j = starty; j <= endy; j++) {list.add(matrix[startx][j]);}for (int i = startx + 1; i <= endx; i++) {list.add(matrix[i][endy]);}for (int j = endy - 1; j >= starty; j--) {list.add(matrix[endx][j]);}for (int i = endx - 1; i >= startx + 1; i--) {list.add(matrix[i][starty]);}startx++;starty++;endx--;endy--;}return list;}public static void main(String[] args) {int[][] matrix={{1,2,3,4,5},                {6,7,8,9,10},                {11,12,13,14,15}};System.out.println(printMatrix(matrix));}}


0 0