当前位置: 首页 > news >正文

leetcode_59. 螺旋矩阵 II_java

59. 螺旋矩阵 IIhttps://leetcode.cn/problems/spiral-matrix-ii/

1.题目

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= n <= 20

2.题解

class Solution {
    public int[][] generateMatrix(int n) {
        // 创建一个 n x n 的二维数组,用于存储生成的矩阵
        int[][] nums = new int[n][n];
        
        // 初始化起始位置和计数器
        int startX = 0, startY = 0;
        int count = 1;  // 用于填充矩阵的数字,初始为 1
        
        // 控制循环的层数,每一层是一个外圈的数字填充
        int loop = 1;
        
        // offset 用于控制每次填充的边界
        int offset = 1;
        
        // 循环控制每一层的填充,直到达到矩阵的中心
        int i, j;
        while (loop <= n / 2) {
            // 填充当前层的上边,左到右
            for (j = startY; j < n - offset; j++) {
                nums[startX][j] = count++;  // 从左到右填充
            }

            // 填充当前层的右边,顶到底
            for (i = startX; i < n - offset; i++) {
                nums[i][j] = count++;  // 从上到下填充
            }

            // 填充当前层的下边,右到左
            for (; j > startY; j--) {
                nums[i][j] = count++;  // 从右到左填充
            }

            // 填充当前层的左边,底到顶
            for (; i > startX; i--) {
                nums[i][j] = count++;  // 从下到上填充
            }

            // 移动到下一层,开始下一个边界
            loop++;
            startX++;
            startY++;
            offset++;
        }
        
        // 如果 n 是奇数,最后会剩下一个中心点需要单独填充
        if (n % 2 != 0) {
            nums[startX][startY] = count;  // 填充中心位置
        }
        
        // 返回最终填充的矩阵
        return nums;
    }
}

相关文章:

  • 【ISP】HDR技术中Sub-Pixel与DOL的对比分析
  • 系统与网络安全------Windows系统安全(10)
  • Module模块化
  • Vue2 插槽 Slot
  • Ethernet Protocol以太网协议
  • 爬虫中遇到的问题
  • Elixir语言的函数定义
  • 【家政平台开发(24)】营销推广模块开发全攻略
  • 前端-项目工程化(快速理解并会用)
  • 【教程】MacBook 安装 VSCode 并连接远程服务器
  • 在深度学习中,如何统计模型的 ​​FLOPs(浮点运算次数)​​ 和 ​​参数量(Params)
  • Tiktok 关键字 视频及评论信息爬虫(1) [2025.04.07]
  • 从GPU加速到深度学习革命 —— AlexNet论文概述
  • 面试题vue
  • Compose Multiplatform+Kotlin Multiplatfrom 第五弹跨平台 截图
  • 深度学习与神经网络 | 邱锡鹏 | 第四章学习笔记 神经网络
  • centos操作系统如何更换yum镜像源
  • git pull 和 git fetch
  • ffmpeg基础知识入门
  • 力扣Hot100题,刷题
  • 美国务卿与以色列总理通话,讨论加沙局势
  • 民间打拐志愿者上官正义遭人身安全威胁,杭州公安:已立案
  • 技术派|威胁F-35、击落“死神”,胡塞武装防空战力如何?
  • 中央军委决定调整组建3所军队院校
  • 杞支雅男评《1517》|放眼世界,立足德国
  • 浙能集团原董事长童亚辉被查,还是杭州市书法家协会主席