算法刷题-数组篇之螺旋矩阵II(超简单)

作者:destiny_tool日期:2025/10/15

力扣题目链接https://leetcode.cn/problems/spiral-matrix-ii/

1.1 问题描述:

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

示例:

输入: 3 输出: [ [ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ] ]

1.2 思路:

本题具体考察的还是开发者对于数组操作的一个能力。

螺旋矩阵绝对是面试中的“常客”——它不算难,不用复杂算法,就是纯纯的模拟过程,但偏偏特别考验代码掌控力。

1.21 先想明白:螺旋矩阵是怎么“画”出来的?

顺时针填充矩阵的过程,本质是“由外向内绕圈”,每一圈要做四件事:

  1. 填充上行:从左到右
  2. 填充右列:从上到下
  3. 填充下行:从右到左
  4. 填充左列:从下到上

问题的关键就在于:这四步的边界怎么定?如果每一步的规则都不一样,代码必然混乱。所以我们要给这四步定一个统一的“规矩”——比如左闭右开(就是“包含起点,不包含终点”)。

1.22 示意图

当n为奇数的时候,需要考虑矩阵中心元素的单独赋值

当n为奇数的时候,不需要考虑矩阵中心元素的单独赋值

相信看到这里的读者,已经对此类题目思路印象深刻了,下面是具体的代码实现,十分简易.

2.1 代码实现简易版

1class Solution {
2    public int[][] generateMatrix(int n) {
3
4        int arr[][] = new int[n][n];
5        int row = 0, col = 0;  // 记录 当前索引的位置
6        int loop = n / 2;     // 循环圈数
7        int cir = n - 1;     //每一圈的边长
8        int startNumber = 1; // 数组赋值数
9
10        // 以n等于5为例子
11        while (loop-- > 0) {
12
13            //左边到右边的循环 每一次
14            for (int i = 0; i < cir; i++) {
15                arr[row][col++] = startNumber++;
16
17            }
18
19            //上到下
20            for (int i = 0; i < cir; i++) {
21                arr[row++][col] = startNumber++;
22            }
23            //右到左
24            for (int i = 0; i < cir; i++) {
25                arr[row][col--] = startNumber++;
26            }
27            //下到上   读者可以思考循环到这个位置我们的索引是多少
28            for (int i = 0; i < cir; i++) {
29                arr[row--][col] = startNumber++;
30            }
31
32            // 更新索引为下一圈的初始位置
33            row++;
34            col++;
35            cir -= 2;
36
37        }
38
39        //更新奇数矩阵的中心位置元素的值
40        if (n % 2 != 0) {
41            arr[row][col] = startNumber;
42        }
43
44        return arr;
45    }
46}

参考文档:

程序员 Carl. 代码随想录(LeetCode 算法刷题攻略官网)[EB/OL]. (2025-02)[2025-10]. https://www.programmercarl.com/.


算法刷题-数组篇之螺旋矩阵II(超简单)》 是转载文章,点击查看原文


相关推荐


Spring Boot 3.x核心特性与性能优化实战
奋斗的小monkey2025/10/14

Spring Boot 3.x核心特性与性能优化实战 前言 随着Java生态的持续演进,Spring Boot 3.x作为最新版本带来了许多重大改进和创新特性。本文将深入探讨Spring Boot 3.x的核心技术亮点,并结合实际案例展示性能优化的最佳实践。 1. 技术栈升级 Spring Boot 3.x正式要求使用JDK 17及以上版本,这标志着Spring框架全面拥抱现代Java特性。 // 传统方式 @Configuration public class AppConfig {


黑马商城微服务项目准备工作并了解什么是微服务、SpringCloud
Le1Yu2025/10/12

目录 一、后端项目的导入以及启动服务的配置 二、前端nginx项目的导入 三、linux虚拟机MySql安装 四、单体架构与微服务         单体架构        :         微服务: 五、SpringCloud 一、后端项目的导入以及启动服务的配置         将资料当中的项目下载下来后用idea打开;按Alt+8打开Services面板,按照指示添加启动项:         找到Spring Boot:         点击后应该


从0到1微调DeepSeek大模型,LoRA+4位量化让24GB显卡也能玩转
陈敬雷-充电了么-CEO兼CTO2025/10/10

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】 文章目录 GPT多模态大模型与AI Agent智能体系列二百一十六从0到1微调DeepSeek大模型,LoRA+4位量化让24GB显卡也能玩转一、为什么要微调DeepSeek?从“通才”到“专家”的蜕变二、微调核心原理:从损失函数到数据策略


基于Hadoop的车辆二氧化碳排放量分析与可视化系统|基于Spark的车辆排放量实时监控与预测系统|基于数据挖掘的汽车排放源识别与减排策略系统
计算机源码社2025/10/9

💕💕作者:计算机源码社 💕💕个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Spark、hadoop、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 💕💕Python项目 💕💕PHP项目 💕💕ASP.NET项目 💕�


Flutter 应用生命周期:使用 AppLifecycleListener 阻止应用崩溃
JarvanMo2025/10/8

当我刚开始进行 Flutter 开发时,应用生命周期(App Life Cycle)感觉就像一个神秘的黑盒子。为什么我点击 Home 键时我的计时器会停止?为什么我恢复应用时相机有时会崩溃?朋友们,答案就在于应用生命周期。 欢迎关注我的微信公众号:OpenFlutter,感谢。 作为一名 Flutter 开发者,掌握应用生命周期不仅仅是一个好主意——它是构建专业应用的必不可少的条件。它能让你防止应用崩溃、节省用户的电量,并保护他们宝贵的数据。 本指南将详细解析这些关键状态,并使用 AppLif


Oracle云基础设施强势崛起:AI驱动的新一代云计算竞争格局
qife1222025/10/6

Beyond Stargate: Oracle OCI提升云基础设施吸引力 Oracle与前沿AI模型制造商达成了震撼市场的交易,但专家表示,该公司也加强了对云计算三巨头在企业IaaS领域的挑战。 无论企业AI最终是福音还是泡沫,IT买家现在都需要考虑Oracle云基础设施这个新的主要参与者。Oracle本月频频登上头条,包括9月9日发布的强劲云收入预测,这主要得益于来自前沿模型公司的投资,例如OpenAI和软银的Stargate合资企业,该企业于6月与Oracle签署了4.5吉瓦数据中心协议。


数据仓库和商务智能考试考点及关系梳理
轩哥Up2025/10/5

一、核心考点分类及具体内容 (一)基础定义与核心区别(高频基础考点) 核心定义 概念 核心含义 关键目标 数据仓库(Data Warehouse, DW) 面向主题、集成、稳定、时变的结构化数据存储系统,通过整合多个数据源(OLTP系统、文件、API等)的历史数据,为企业决策提供统一的数据基础 1. 数据整合:消除数据孤岛,形成企业级统一数据视图; 2. 历史存储:保留长期历史数


首屏加载优化总结
excel2025/10/4

一、什么是首屏加载 首屏时间(First Contentful Paint,FCP) :浏览器从输入网址到 首屏内容渲染完成 的时间。 不需要整个网页都渲染完,但首屏区域必须显示内容。 重要性:是衡量用户体验最关键的性能指标之一。 计算方式 监听 DOMContentLoaded document.addEventListener('DOMContentLoaded', () => { console.log('first contentful painting'); });


Android Studio | 设置国内代理(SDK 设置国内代理(阿里云镜像))
指针不南2025/10/2

Android Studio 相关下载设置国内代理(阿里云镜像)(Android Git 仓库 国内代理/阿里云镜像) 简介 Android 上的 Git 存储库。 下载地址 阿里云镜像:https://mirrors.aliyun.com/android.googlesource.com/ 相关链接 官方主页 使用方法 打开设置(settings)。进入“外观与行为”(Appearance & Behavior)。选择“系统设置”(System Settings)。点击“HTT


[创业之路-643]:互联网与移动互联网行业与通信行业的关系
文火冰糖的硅基工坊2025/10/2

互联网、移动互联网与通信行业三者之间存在着深度嵌套、相互依存、协同发展的关系。它们不是并列的平行产业,而是构成现代信息社会基础设施的“网络之网”。下面从定义、关系结构、产业链角色和技术演进角度系统解析三者之间的关系。 一、基本定义 行业定义通信行业(Telecommunications)提供信息传输通道的基础服务行业,包括语音、数据、视频等信号的物理传输和网络连接能力。核心是“通路”——让信息从A传到B。互联网(Internet)基于TCP/IP协议族构建的全球性计算机网络系统,通过通信网

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0