题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/97e7a475d2a84eacb60ee545597a8407

import java.util.*;

public class Printer {
    public int[] clockwisePrint(int[][] mat, int n, int m) {
        // write code here
        //一共打印 count次就结束
        int count = n * m;
        int[] c = new int[count];

        boolean[][] visited = new boolean[n][m];

        //
        boolean shangHeng = true;
        boolean youShu = false;
        boolean xiaHeng = false;
        boolean zuoShu = false;
        int x = 0, y = 0, i = 0;
        while (i < count) {
            visited[x][y] = true;
            c[i] = mat[x][y];
            i++;

            //上横
            if (shangHeng) {
                //判断是否到边缘,到边缘就要调整方向
                if (y + 1 >= m || visited[x][y + 1]) {
                    shangHeng = false;
                    youShu = true;
                    x++;
                    continue;
                } else {
                    y++;
                }
            }
            //右竖
            if (youShu) {
                //判断是否到边缘,到边缘就要调整方向
                if (x + 1 >= n || visited[x + 1][y]) {
                    youShu = false;
                    xiaHeng = true;
                    y--;
                    continue;
                } else {
                    x++;
                }
            }

            //下横
            if (xiaHeng) {
                //判断是否到边缘,到边缘就要调整方向
                if (y - 1 < 0 || visited[x][y - 1]) {
                    xiaHeng = false;
                    zuoShu = true;
                    x--;
                    continue;
                } else {
                    y--;
                }
            }
            //左竖
            if (zuoShu) {
                //判断是否到边缘,到边缘就要调整方向
                if (x - 1 < 0 || visited[x - 1][y]) {
                    zuoShu = false;
                    shangHeng = true;
                    y++;
                    continue;
                } else {
                    x--;
                }
            }
        }
        return c;
    }
}

全部评论

相关推荐

06-13 17:00
武汉大学 Java
6月了还有点击就送的offer吗😭,投麻了😢
叫我阿东就行:这个bg,也还没找到理想的工作吗?好难,好焦虑
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务