顺时针打印矩阵

顺时针打印矩阵

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

思路

创建一些实例输入测试,对向右,向下,向左,向上进行标记。
4的方向对应四个不同的对i,j,k以及数组add的处理
在处理过程中,注意这个操作本身是在操作行还是列,也就是变换的是i还是j。除此以外,特别注意for语句的循环退出条件,一定是个动态变化的值,不能写死了(注意观察每一步的变量,定量即可)

代码:

class Solution {
    public int[] spiralOrder(int[][] matrix) {
        if(matrix.length != 0){
            int[] arr = new int[matrix.length*matrix[0].length];
            int k = 1;
        int s = 0;
        int j = 0;
        int i = 0;
        //1:右 2:下 3:左 4:上
        //matrix的列数为matrix[0].length
        //matrix的行数为matrix.length
        while(s != matrix.length*matrix[0].length){
            if(k == 1){
                for(;j<matrix[0].length-i;j++){
                    arr[s] = matrix[i][j];
                    s++;
                }
                i++;
                k = 2;
            }else if(k == 2){
                 for(; i <matrix.length -(matrix[0].length-j); i++){
                    arr[s] = matrix[i][j-1];
                    s++;
                }
                j--;
                k = 3;
            }else if(k == 3){
                for(j=j-1;j>matrix.length - i;j--){
                    arr[s] = matrix[i-1][j];
                    s++;
                }
                i--;
                k = 4;
            }else if(k == 4){
                for(;i> j;i--){
                    arr[s] = matrix[i][j];
                    s++;
                }
                j++;
                i++;
                k = 1;
            }

        }
        return arr;
        }else{
            int[] arr = new int[0];
            return arr;
        }
        
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值