当前位置: 首页 > 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;
    }
}

http://www.dtcms.com/a/118260.html

相关文章:

  • 【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题,刷题
  • 红黑树(Red-Black Tree)核心知识点与面试高频问题
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷十·混元大罗(91)混元无极破 NP - 旅行商问题(动态规划 + 状态压缩)
  • 遇到无法连接香港服务器可能是什么原因导致的呢
  • 安宝特应用 | 工业AR技术赋能高端制造领域验收流程数字化转型
  • #在docker中启动mysql之类的容器时,没有挂载的数据...在后期怎么把数据导出外部
  • 浅谈filebeat实现日志采集
  • HTML5 新元素:革新网页开发体验
  • 人工智能-深度学习导学-01
  • Selenium自动化:玩转浏览器,搞定动态页面爬取
  • JavaScript基础-window.localStorage