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

来源:互联网 发布:ug8.0车床编程 编辑:程序博客网 时间:2024/05/16 12:15
import java.util.ArrayList;public class Solution {    public static ArrayList<Integer> printMatrix(int [][] matrix) {        if(matrix == null) return null;        ArrayList<Integer> arrayList = new ArrayList<>();        int up_limit = 0;        int down_limit = matrix.length-1;        int left_limit = 0;        int right_limit = matrix[0].length-1;        //保证有数字会继续输出        while (up_limit <= down_limit && left_limit <= right_limit) {            //从左到右打印            if(up_limit <= down_limit) {                for(int i = left_limit;  i <= right_limit; ++i)                    //System.out.print(matrix[up_limit][i] + " ");                    arrayList.add(matrix[up_limit][i]);                //上边界加1                up_limit = up_limit +1;            }            //从上到下打印            if(right_limit >= left_limit) {                for(int i = up_limit; i <= down_limit; ++i){                    //    System.out.print(matrix[i][right_limit] + " ");                    arrayList.add(matrix[i][right_limit]);                }                //右边界-1                right_limit = right_limit - 1;            }            //从右到左打印            if(down_limit >= up_limit) {                for(int i = right_limit; i >= left_limit; --i) {                    //System.out.print(matrix[down_limit][i] + " ");                    arrayList.add(matrix[down_limit][i]);                }                //下边界-1                down_limit = down_limit - 1;            }            if(left_limit <= right_limit) {                //从下到上打印                for(int i = down_limit; i >= up_limit; --i) {                    //System.out.print(matrix[i][left_limit] + " ");                    arrayList.add(matrix[i][left_limit]);                }                //左边界+1                left_limit = left_limit + 1;            }        }        return arrayList;    }}