剑指offer--顺时针打印矩阵

来源:互联网 发布:做淘宝售前客服辛苦吗 编辑:程序博客网 时间:2024/06/05 22:42

题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.


AC代码:

import java.util.ArrayList;public class Solution {    public ArrayList<Integer> printMatrix(int [][] matrix) {       ArrayList<Integer> arr = new ArrayList<>();       int row1 = 0;       int row2 = matrix.length;       int col1 = 0;       int col2 = matrix[0].length;       while(true){           //从左到右打印           for(int i = col1 ; i < col2 ; i++){               arr.add(matrix[row1][i]);           }           row1++;           if (row1 >= row2){               break;           }           //从上到下打印           for(int i = row1 ; i < row2 ; i++){               arr.add(matrix[i][col2-1]);           }           col2--;           if ( col2 <= col1){               break;           }           //从右到左打印           for(int i = col2-1 ; i >= col1 ; i--){               arr.add(matrix[row2-1][i]);           }           row2--;           if ( row1 >= row2){               break;           }           //从下到上打印           for(int i = row2-1 ; i >= row1 ; i--){               arr.add(matrix[i][col1]);           }           col1++;           if ( col1 >= col2){               break;           }       }       return arr;    }}
1 0
原创粉丝点击