59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)
今天来分享一下螺旋矩阵的解题思路及代码的实现。
题目描述如下:

首先拿到这道题,首先不要慌张,我们来仔细分析一下会发现并没有那么难。
首先看下边界的元素是1、2、3递增的,那么我们也许可以根据这一点先把边界的元素一个一个给加入到数组中。
具体思路如下:
我们看下面这个例子,我们创建一个4行4列的螺旋矩阵来进行分析

如果我们每次处理前3个数字,比如第一行我们处理1-3,然后继续处理列也就是4-6,然后处理7-9,这样可以发现一个规律就是我们每次都不对末尾的元素进行处理,这样遵循了循环不变原则。
然后处理完一圈之后一次对内部的13、14、15、16依次处理。
那么需要注意的是输入的n是奇数和偶数的处理还是有一定的区别。
完整的代码如下:
```java
public static int[][] generateMatrix(int n) {int i=0;int j=0;int startx=0;int starty=0;int count=1;//用于1-16的赋值int flag=1;int[][] arr=new int[n][n];int k=n;while (k/2>0){//控制循环的次数//处理第一行for (j=starty;j<n-flag;j++){//这里需要注意,行要为startx,如果行设置为i的话,// 由于执行了第4个for循环后,i指向了0,那么在第一轮while循环没有问//题,但是会影响2、3。。。次while循环的赋值arr[startx][j]=count;//每次赋值完之后记得对count进行++count++;}for (i=startx;i<n-flag;i++){arr[i][j]=count;count++;}for (j=n-flag;j>starty;j--){arr[i][j]=count;count++;}for (i=n-flag;i>startx;i--){arr[i][j]=count;count++;}k-=2;//每次循环后k-2/*** 当经过一次循环后,需要对startx、y、flag进行++,便于后续的while循环的赋值*/flag++;startx++;starty++;}//如果输入的n为奇数将中间的值进行赋值。if (n%2!=0){arr[startx][starty]=count;}return arr;}
``
方便大家理解我花了下面这幅图

第一轮while循环执行的步骤,当执行完第一个for循环之后,j指向了红色箭头,然后执行第2个for循环对蓝色框进行赋值,然后i指向了蓝色箭头所示,,,后面的两个for循环分别对紫色和绿色矩阵进行赋值。
需要注意的几个点:
1.当经过一次循环后,需要对startx、y、flag进行++,便于后续的while循环的赋值。
2. 每次while循环后需要进行-2或者/2的操作,但是不要操作传进来的n,需要用一个变量进行赋值,这样不会改变n的值,不会影响for循环的判断。
3. 还有就是对传入的n为奇数时的处理。
那么本道题的所有代码及思路就到这里结束了,如果有问题可以在文章下方留言,觉得博主写的不错的话麻烦点个小小的爱心。
相关文章:
59. 螺旋矩阵 II(java实现,史上最详细教程,想学会的进!!!)
今天来分享一下螺旋矩阵的解题思路及代码的实现。 题目描述如下: 首先拿到这道题,首先不要慌张,我们来仔细分析一下会发现并没有那么难。 首先看下边界的元素是1、2、3递增的,那么我们也许可以根据这一点先把边界的元素一个一个给…...
vue 将后端返回的二进制流进行处理并实现下载
什么是二进制流文件? 二进制文件是一种计算机文件格式,它的数据以二进制形式存储,与文本文件不同。二进制文件可以包含任意类型的数据,例如图像、音频、视频、可执行文件、压缩文件等,而文本文件则仅仅包含 ASCII 码或…...
PyCharm连接远程服务器
要求:PyCharm专业版才支持远程服务 一、创建远程连接 先建立本地与远程服务器之间的SSH连接 1、配置连接 2、建立SSH连接,选择文件传输协议 SFTP 3、设置服务器名(可以随意命名) 4、配置 SSH连接 点击 172.18.1.202 配置…...
使用Qt制作网易云播放器的歌曲排行界面
!!!直接上图!!! !!!直接上图!!! !!!直接上图!!! 网易云排行榜…...
【.NET Core】特性(Attribute)详解
【.NET Core】特性(Attribute)详解 文章目录 【.NET Core】特性(Attribute)详解一、概述二、编写自定义属性2.1 自定义特性的主要步骤2.2 应用AttributeUsageAttributeAttributeTargets 成员Inherited属性AllowMultiple属性 三、声…...
【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载
【C】郭老二博文之:C目录 1、哈希 1.1 说明 std::map和std::set 的性能是:O(log n) POCO哈希的性能比STL容器更好,大约快两; POCO中对应std::map的是:Poco::HashMap; POCO中对应std::set的是 Poco::Hash…...
1846_安全SPI
Grey 全部学习内容汇总:GitHub - GreyZhang/g_embedded: some embedded basic knowledge. 1846_安全SPI SPI是一种常见的通信方式,在汽车电子中比较常用。但是如果涉及到安全相关的设计,可能得考虑更多。而SPI协议本身没有很好的标准化&am…...
SQL Server ,使用递归查询具有层级关系的数据。
假设我们有一个表格 Employees,其中包含员工的层级关系信息,每一行包括员工的ID、姓名以及上级员工的ID。 下面是一个示例表格及其数据: Employees ---------------------- EmployeeID | Name | ManagerID ---------------------- 1 …...
【参数汇总】mysql服务端/客户端常见优化参数
mysql服务端参数 1、innodb_buffer_pool_size (innodb索引buffer pool缓冲区大小) 默认大小为128M, 官方推荐其配置为系统内存的 50% 到 75% 。 一般innodb_buffer_pool_size要结合以下两个参数来设置: innodb_buffer_pool_ch…...
LeetCode 142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…...
Leetcode刷题笔记题解(C++):224. 基本计算器
思路: step 1:使用栈辅助处理优先级,默认符号为加号。 step 2:遍历字符串,遇到数字,则将连续的数字字符部分转化为int型数字。 step 3:遇到左括号,则将括号后的部分送入递归&#x…...
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
文章目录 前言一、📖MyBatis简介1.Mybatis历史2.MyBatis特性3.对比(其他持久化层技术) 二、📣搭建MyBatis1.开发环境2.创建maven工程3.创建MyBatis核心配置文件4.创建mapper接口5.创建MyBatis的映射文件6.通过junit测试功能7.加入…...
C# WPF上位机开发(树形控件在地图软件中的应用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们聊过图形软件的开发方法。实际上,对于绘制的图形,我们一般还会用树形控件管理一下。举个例子,一个地图…...
【华为】文档中命令行约定格式规范(命令行格式规范、命令行行为规范、命令行参数格式、命令行规范)
文章目录 命令行约定格式**粗体:命令行关键字***斜体:命令行参数*[ ]:可选配置{ x | y | ... } 和 [ x | y | ... ]:选项{ x | y | ... }* 和 [ x | y | ... ]*:多选项&<1-n>:重复参数#ÿ…...
Trie 字典树(c++)(前缀)
题目链接:用户登录 题目: 样例: 输入 5 3 aaa aba aabbaa abbbbb cdd aabba abc abab 输出 Y N N 思路: 根据题目意思,要用到 Trie 字典树算法。 Trie 字典树,顾名思义,“字典”࿰…...
全球移动通信(2G/3G/4G/5G)频谱分布情况
一、概述 随着通信技术的不断发展,全球各国都在积极推进2G、3G、4G、5G网络的建设和应用。根据FCC统计,目前全球移动通信频谱分布如下: 二、分布 (一)俄罗斯 2G:主要使用900MHz和1800MHz两个频段。其中&…...
【04】GeoScene导出海图或者电子航道图000数据成果
1创建一个带有覆盖面和定义的产品 如果你没有已存在的S-57数据,你可以通过捕捉新的产品覆盖范围(多边形产品范围)及其所需的产品定义信息(产品元数据)来为新产品创建基础。 注: 如果你已经有一个S-57数据…...
安卓端出现https请求失败(转)
背景# 某天早上,正在一个会议时,突然好几个同事被叫出去了;后面才知道,是有业务同事反馈到领导那里,我们app里面某个功能异常。 具体是这样,我们安卓版本的app是禁止截屏的(应该是app里做了拦…...
appium2.0.1安装完整教程+uiautomator2安装教程
第一步:根据官网命令安装appium(Install Appium - Appium Documentation) 注意npm前提是设置淘宝镜像: npm config set registry https://registry.npmmirror.com/ 会魔法的除外。。。 npm i --locationglobal appium或者 npm…...
Hbase的Rowkey设计
Hbase的Rowkey设计 rowkey设计 # 1)长度原则# 最大64KB,推荐长度10~100 byte# 最好设为8的倍数,能短则短,rowkey如果太长会影响性能。# 2)唯一原则:rowkey应该具备唯一性# 3)散列原则…...
NotebookLM溯源结果不显示原文页码?紧急补丁已部署!2024Q3最新API v2.3溯源增强版深度解读
更多请点击: https://intelliparadigm.com 第一章:NotebookLM溯源功能演进与v2.3核心定位 NotebookLM 自 2023 年初发布以来,其“溯源”能力经历了从静态引用标注到动态上下文感知的显著跃迁。早期版本仅支持对上传文档片段生成粗粒度来源标…...
仅限前500名开发者获取:ElevenLabs内部情绪标注规范PDF(含惊讶语音的12维声学特征定义表+标注样例音频)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs惊讶情绪语音的声学本质与认知基础 惊讶情绪在语音合成中并非简单提升音高或加快语速,而是涉及多维声学参数的协同调制。ElevenLabs 的情感语音模型通过微分频带能量分布、瞬态基…...
基于M6801SPCS的闭环步进电机控制:从PID三环到工业应用实战
1. 项目概述:当步进电机遇上闭环,工业自动化的一次精密升级在工业自动化领域,步进电机因其结构简单、控制方便、成本低廉,一直是许多点位控制、低速高精度场景的宠儿。但传统开环步进有个“阿喀琉斯之踵”——丢步。一旦负载突变或…...
Python 簡單的 股市資料 API 呼叫範例
前言 假如我們想從某個外部服務取得股市資料,藉由Python API 呼叫,可以讓我們從雅虎財經的API下載市場數據。以下簡單得介紹一個API , yfinance 一個 Python 開源函式庫,使用者可以輕鬆地取得股票、指數、貨幣、ETF、基金以及期貨…...
KMS智能激活工具:3个颠覆性技巧告别Windows和Office激活烦恼
KMS智能激活工具:3个颠覆性技巧告别Windows和Office激活烦恼 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经在准备重要演示时,Office突然弹出"许可证已过…...
半小时搞定C#开发
前言 此篇发出的原因有两点 致敬C#开篇 - 孤独战士,一篇包含雄心壮志的开篇,便无疾而终,时隔这么多年回关,内心莫名欣慰,感谢曾经的自己,就像文章标题所说,做一个无谓的孤独战士。笔者看到现在…...
终极指南:在Windows上直接安装安卓APK的3大优势与6个实用技巧
终极指南:在Windows上直接安装安卓APK的3大优势与6个实用技巧 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK Installer是一款专为Windows系统设计的安…...
如何在DS918+上免费开启Synology Photos人脸识别功能:完整补丁指南
如何在DS918上免费开启Synology Photos人脸识别功能:完整补丁指南 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 你是否曾经在群晖DS918…...
LLMRank:基于大模型排序学习的自动化评估方案与实践指南
1. 项目概述:当大模型学会“自我评价”,我们该如何用好它? 最近在折腾大语言模型(LLM)应用落地的朋友,估计都绕不开一个核心问题: 怎么判断模型生成的内容到底好不好? 是通顺就行…...
终极无人机仿真平台XTDrone:从入门到精通的完整指南
终极无人机仿真平台XTDrone:从入门到精通的完整指南 【免费下载链接】XTDrone UAV Simulation Platform based on PX4, ROS and Gazebo 项目地址: https://gitcode.com/gh_mirrors/xt/XTDrone XTDrone是一款基于PX4飞控、ROS机器人操作系统和Gazebo物理引擎的…...
