前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >顺时针打印矩阵

顺时针打印矩阵

作者头像
名字是乱打的
发布2022-05-13 09:27:04
3040
发布2022-05-13 09:27:04
举报
文章被收录于专栏:软件工程

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

思想:

定义左上顶点和右下顶点,这样可以确定一个框了,每次顺时针打印这个框,打印完了,向内缩小框直到两个顶点相同或者相错

代码

代码语言:javascript
复制
import java.util.ArrayList;
public class Solution {
       ArrayList<Integer> list=new ArrayList<>();
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        int tR=0;//矩阵左上角的行坐标
        int tC=0;//矩阵左上角的列左边
        int dR=matrix.length-1;   //矩阵右下角的行坐标
        int dC=matrix[0].length-1;//矩阵右下角的列左边
        while (tR<=dR&&tC<=dC){
        prindEdge(matrix,tR,tC,dR,dC);
        tR++;tC++;
        dR--;dC--;
        }
        return list;
    }
public  void  prindEdge(int[][] matrix, int tR,int tC,int dR,int dC){
        if (tR==dR&&tC==dC){ //同点
         list.add(matrix[tR][tC]);
        }
        if (tR==dR&&tC!=dC)//同行不同列
        {
            for(int i=tC;i<=dC;i++){
                list.add(matrix[tR][i]);
            }
        }
        if (tC==dC&&tR!=dR)//同列不同行
        {
            for(int i=tR;i<=dR;i++){
                list.add(matrix[i][tC]);
            }
        }
        if (tC!=dC&&tR!=dR){//不同列不同行
            //       (tR,tC)
            //
            //
            //
            //                        (dR,dC)
            int currC=tC;
            int currR=tR;
            while (currC!=dC) { //打印上边框
                list.add(matrix[tR][currC]);
                currC++;
            }
            while (currR!=dR){//打印右边框
                list.add(matrix[currR][dC]);
                currR++;
            }
            while (currC!=tC){//打印下边框
                list.add(matrix[currR][currC]);
                currC--;
            }
            while (currR!=tR){//打印左边框
                list.add(matrix[currR][currC]);
                currR--;
            }
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思想:
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档