写点什么

【LeetCode】螺旋矩阵 II Java 题解

用户头像
HQ数字卡
关注
发布于: 2021 年 03 月 16 日

昨天的每日一题是螺旋矩阵,今天是螺旋矩阵 II ,和昨天的题目一脉相承!快来学习一下!


题目


给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。


代码


public class DayCode {    public static void main(String[] args) {        int n = 3;        int[][] ans = new DayCode().generateMatrix(n);        System.out.println(Arrays.deepToString(ans));    }
/** * 题目链接: https://leetcode-cn.com/problems/spiral-matrix-ii/ * 时间复杂度 O(n) * 空间复杂度 O(n * n) * * @param n * @return */ public int[][] generateMatrix(int n) { int[][] ans = new int[n][n]; boolean[][] visited = new boolean[n][n]; int[][] directions = new int[][]{{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; int directionIdx = 0; int row = 0; int col = 0; for (int i = 1; i <= n * n; i++) { ans[row][col] = i; visited[row][col] = true; int nextRow = row + directions[directionIdx][0]; int nextCol = col + directions[directionIdx][1]; if (nextRow < 0 || nextRow >= n || nextCol < 0 || nextCol >= n || visited[nextRow][nextCol]) { directionIdx = (directionIdx + 1) % 4; } row += directions[directionIdx][0]; col += directions[directionIdx][1]; }
return ans; }}
复制代码


总结

  • 螺旋矩阵题目容易理解,在实际编码中要注意方向变量的使用,掌握了方向变量,即可 AC 这个题目!

  • 螺旋矩阵Java题解,一个题目做两遍,更好更熟悉的掌握解决这类问题的办法!

  • 坚持每日一题,加油!


发布于: 2021 年 03 月 16 日阅读数: 5
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】螺旋矩阵 II Java 题解