顺时针打印矩阵 按圈打印 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的主要内容,如果未能解决你的问题,请参考以下文章