顺时针打印矩阵 按圈打印 java

Posted 厚积_薄发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺时针打印矩阵 按圈打印 java相关的知识,希望对你有一定的参考价值。

顺时针打印矩阵

题目描述

对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。

给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。

测试样例:
[[1,2],[3,4]],2,2
返回:[1,2,4,3]
可以按圈打印,最大圈数的2倍不能超过 m和n的最小值

import java.util.*;
 
public class Printer 
     
    public int[] clockwisePrint(int[][] mat, int n, int m) 
        int[] ret = new int[n*m];
        int k=0;
        for(int s=0;s*2<m&&s*2<n;s++)
            int endx = m-1-s;
            int endy = n-1-s;
            for(int i=s;i<=endx;++i)  //左->右
                ret[k++]=mat[s][i];
            if(s<endy)                // 上->下
                for(int i=s+1;i<=endy;++i)
                    ret[k++]=mat[i][endx];
            
            if(s<endx&&s<endy)          //右->左
                for(int i=endx-1;i>=s;--i)
                    ret[k++]=mat[endy][i];
            
            if(s<endx&&s<endy-1)      //下->上
                for(int i=endy-1;i>=s+1;--i)
                    ret[k++]=mat[i][s];
                
            
        
        return ret;
    







以上是关于顺时针打印矩阵 按圈打印 java的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer得意之作——顺时针打印矩阵

Java 剑指offer(29) 顺时针打印矩阵

顺时针打印矩阵

7 顺时针打印矩阵

顺时针打印矩阵

剑指offer:顺时针打印矩阵