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

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

规定偏移量做法
一共四个方向 上下左右 分别可用 左:(0, -1) 右:(0, 1)(-1,0)(1,0)表示
题中遍历的方向为顺时针,即为右下左上。
于是规定: dx = {0, 1, 0, -1}
dy = {1, 0, -1, 0}
到达边界就转向,遍历过的点加入res,并用st数组标记。

import java.util.ArrayList;
public class Solution {

    public ArrayList<Integer> printMatrix(int [][] matrix) {
        int m = matrix.length;
       int n = matrix[0].length;
        ArrayList<Integer> res = new ArrayList<>();
       boolean[][] st = new boolean[m][n];
       int[] dx = {0, 1, 0, -1};
       int[] dy = {1, 0, -1, 0};

       for(int x = 0,y = 0,d = 0, k = 1; k <= m * n; k++) {
           res.add(matrix[x][y]);
           st[x][y] = true;
           int a = x + dx[d];
           int b = y + dy[d];
           if(a >= m || b >= n || a < 0 || b < 0 || st[a][b] == true) {
               d = (d + 1) % 4;
               a = x + dx[d];
               b = y + dy[d];
           }
           x = a;
           y = b;
       }
        return res;
    }
}

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
2022-12-20 00:05
门头沟学院_2023
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议