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

来源:互联网 发布:天然气软件收费系统 编辑:程序博客网 时间:2024/05/27 14:14

顺时针打印矩阵
  • 热度指数:1440时间限制:3秒空间限制:32768K
  • 本题知识点: 模拟 数组
  •  算法知识视频讲解

题目描述

对于一个矩阵,请设计一个算法从左上角(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;    }}







0 0
原创粉丝点击