侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 471 篇文章
  • 累计创建 108 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【矩阵, 模拟】螺旋矩阵 II

GabrielxD
2022-04-17 / 0 评论 / 0 点赞 / 38 阅读 / 204 字 / 正在检测是否收录...
## 题目

59. 螺旋矩阵 II


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

示例 1:

image-20220416230141860

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

提示:

  • 1 <= n <= 20

解题

方法一:模拟

思路

image-20220416231012435

image-20220416231155602

代码

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] ans = new int[n][n];
        int ele = 1, offset = -1, bound, mid = n >> 1;
        while (offset++ < n) {
            bound = n - offset - 1;
            for (int i = offset; i < bound; i++) {
                ans[offset][i] = ele++;
            }
            for (int i = offset; i < bound; i++) {
                ans[i][n - 1 - offset] = ele++;
            }
            for (int i = bound; i > offset; i--) {
                ans[n - 1 - offset][i] = ele++;
            }
            for (int i = bound; i > offset; i--) {
                ans[i][offset] = ele++;
            }
        }

        if ((n & 1) == 1) {
            ans[mid][mid] = ele;
        }
        return ans;
    }
}
0

评论区