题目描述

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

import java.util.ArrayList;
public class Solution {
   
    public ArrayList<Integer> printMatrix(int [][] matrix) {
   
       
    }
}

参考思路:

控制好边界和结束条件,按顺时针遍历数组并存储即可。

参考实现:

import java.util.ArrayList;
public class Solution {
   
    public ArrayList<Integer> printMatrix(int [][] matrix) {
   
       
        ArrayList<Integer> list = new ArrayList<>();
        
        int up = 0;
        int down = matrix.length-1;
        int left = 0;
        int right = matrix[0].length-1;
        
        while (true){
   
            //上
            for(int col=left; col<=right; col++){
   
                list.add(matrix[up][col]);
            }
            //向下靠近
           up++;
            //判断是否越界
            if (up > down){
   
                break;
            }
            
            //右
            for(int row=up; row<=down;row++){
   
                list.add(matrix[row][right]);
            }
            //向左靠近
            right--;
            if (right < left){
   
                break;
            }
            
            for(int col=right;col>=left;col--){
   
                list.add(matrix[down][col]);
            }
            down--;
            if(down < up){
   
                break;
            }
            
            for(int row=down; row>=up; row--){
   
                list.add(matrix[row][left]);
            }
            left++;
            if(left > right){
   
                break;
            }
            
        }
        return list;
        
    }
}

看完之后,如果还有什么不懂的,可以在评论区留言,会及时回答更新。

这里是猿兄,为你分享程序员的世界。

非常感谢各位大佬们能看到这里,如果觉得文章还不错的话,
求点赞👍 求关注💗 求分享👬求评论📝
这些对猿兄来说真的 非常有用!!!

注: 如果猿兄这篇博客有任何错误和建议,欢迎大家留言,不胜感激!