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

Leetcode 59.螺旋矩阵Ⅱ

1.题目

image-20240310213332946

2.思路

image-20240310213621445
(借用代码随想录的图)
1.我们将转一圈看作一个循环(1->2->3->4->5->6->7->8 这是一个循环)
2.在这个循环里,我们要画四条边(上右下左)
填充上行从左到右
填充右列从上到下
填充下行从右到左
填充左列从下到上
3.因为画这四条边,有重复元素,我们为了统一处理拐角处元素的规则,规定拐角处都让给新的一条边,就是上图不同颜色的边
4. 这样就有两个循环了(第一个循环表示要绘制多少个四条边,第二个循环里绘制四条边)

3.实施细节

1.在画每一条边的时候,我们首先考虑到的第一个问题是:怎么把数写到对应位置去?
解决:设置一个遍历参数,表示当前的位置
ori_i (表示当前位置的横坐标), ori_j(表示当前位置的列坐标)
res[ori_i][ori_j]= num;

2.接下来会遇到:什么时候该画下一条边?
解决:设置边界参数,按3*3矩阵举例
col_max=2(列最大边界)col_min=0(列最小边界)
row_max=2(行最大边界) row_min=0
拿上行从左到右举例:当遍历参数ori_j <= col_max 时画这条边
其他三条边类推

3 画完这四条边后,就该进入到下一个循环了,该继续画下一个四条边了。这时候我们要设置开始绘制的起点。通过一个start参数来设置每次循环的起点

4 要注意当n=奇数的时候,最后最中间会只留下一个小块,这个时候我们规定这四条边都不绘制中间的小块,我们跳出循环,单独给这个小块赋值!

5 怎样判断绘制结束?
解决:当row_min>= row_max 时结束!
注意这里是大于等于 因为当row_min=row_max的时候表示只剩下中间一个小块了,而根据4.的规定,中间小块我们要跳出循环来单独赋值

4.Java代码实现


class Solution {public int[][] generateMatrix(int n) {int[][] res = new int[n][n];int start = 0; //定义初始点//定义边界int row_max = n - 1;int col_max = n - 1;int row_min = 0;int col_min = 0;int num = 1; //定义要写的数while (row_max > row_min) {int ori_i = start;int ori_j = start;//上侧从左到右for (; ori_j <= col_max - 1; ori_j++) {res[ori_i][ori_j] = num;num++;}//右侧从上到下for (; ori_i <= row_max - 1; ori_i++) {res[ori_i][ori_j] = num;num++;}//下侧从右往左for (; ori_j >= col_min + 1; ori_j--) {res[ori_i][ori_j] = num;num++;}//左侧从下往上for (; ori_i >= row_min + 1; ori_i--) {res[ori_i][ori_j] = num;num++;}//更新边界row_max--;col_max--;row_min++;col_min++;//更新初始点start++;}//如果是奇数,需要给最中间的单独赋值if (n % 2 == 1) {res[start][start] = num;}return res;}
}

相关文章:

Leetcode 59.螺旋矩阵Ⅱ

1.题目 2.思路 &#xff08;借用代码随想录的图&#xff09; 1.我们将转一圈看作一个循环&#xff08;1->2->3->4->5->6->7->8 这是一个循环&#xff09; 2.在这个循环里&#xff0c;我们要画四条边&#xff08;上右下左&#xff09; 填充上行从左到右 填…...

JWT令牌技术

文章目录 什么是令牌技术为什么需要令牌技术呢JWT 令牌JWT 组成JWT 令牌的使用1. 引入 JWT 依赖生成 JWT 令牌解析 JWT 令牌 什么是令牌技术 令牌技术是一种重要的安全技术&#xff0c;它在多个领域中发挥着关键作用。简单来说&#xff0c;令牌&#xff08;Token&#xff09;可…...

从零学习Linux操作系统 第三十二部分 ansible中剧本的应用

一、什么是playbook及playbook的组成 1.Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 play就是一个个模块用列表的方式体现出来 playbook的语法是用YAML的预防进行书写的 2.YAML 简介 是一种表达资料序列的格式&#xff0c;类似XM…...

目标网站屏蔽右键检查(使用开发者工具)

问题&#xff1a; 通过网络触手中想要获取某网站的数据出现&#xff1a;鼠标右击&#xff0c;或按ctrl F10 键 无反应&#xff08;也就是打不开类似谷歌的开发工具&#xff09; 问题同等与&#xff1a; 解决网页屏蔽F12或右键打开审查元素 引用&#xff1a; 作者&#xff…...

docker安装ES、LogStash、Kibana

文章目录 一、安装Elasticsearch1. 安装Elasticsearch2. 安装IK分词器3. elasticsearch-head 监控的插件4. 配置跨域 二、安装LogStash三、安装kibana四、SpringBoot集成LogStash&#xff0c;将日志输出到ES中五、 启动项目&#xff0c;监控项目运行 提示&#xff1a;以下是本篇…...

解决对接淘宝开放平台添加商品图片问题

问题 之前工作因队友离开&#xff0c;只一天接手其部分且第二天就要上线此工具产品&#xff0c;测试提了一些Bug&#xff0c;在Bug中有一个是添加商品图片。前端告知不能用、电话离职队友说能用。没办法自己上、追踪代码。 en这块代码跟需求好像不太相符&#xff0c;重写。 …...

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结&#xff1a;Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&…...

Mac下java环境搭建

JDK 教程:MAC安装JDK及环境变量配置-CSDN博客 建议JDK7和JDK8都装上,因为一些老项目是用JDK7开发,使用JDK8编译时报错。(若没有老项目,直接安装jdk8) 若配置环境变量时找不到JDK的安装路径,有两种方式: 方式一、mac默认位置为:/Library/Java/JavaVirtualMachines/…...

mac设置java环境变量

在 macOS 系统上&#xff0c;设置 JAVA_HOME 环境变量可以通过以下步骤进行&#xff1a; 打开终端应用程序。 输入以下命令来查找 Java 的安装路径&#xff1a;/usr/libexec/java_home 终端会返回 Java 的安装路径&#xff0c;类似 /Library/Java/JavaVirtualMachines/jdk1.…...

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制&#xff08;Roaming Alpha Tag&#xff09; 二、相关配置字段 non_roaming_operator_string_array 是否…...

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法&#xff0c;常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则&#xff0c;从历史样本中集中找出与现在的最相似的一…...

python工具方法 47 基于paddleseg将目标检测数据升级为语义分割数据

在进行项目研究时,通常需要搜集开源数据集。但是所能搜集到的数据集通常会存在形式上的差异,比如我想要的是语义分割数据,而搜集到的数据集却是目标检测数据;在这种情况下所搜集的数据就完成没有利用价值了么?不,其还存在价值,我们可以通过模型训练对数据标签的标注粒度…...

OpenJudge - 38:计算多项式的导函数

总时间限制: 1000ms 内存限制: 65536kB 描述 计算多项式的导函数是一件非常容易的任务。给定一个函数f(x)&#xff0c;我们用f(x)来表示其导函数。我们用x^n来表示x的n次幂。为了计算多项式的导函数&#xff0c;你必须知道三条规则&#xff1a; (1)、(C) 0 如果C是常量 (2)、…...

数据结构:顺序表(C++实现)

1 头文件 SeqList.h //SeqList.h #pragma once #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cassert> using namespace std; class SeqList { public://初始化SeqList();//销毁~SeqList();//头插void PushFront(int data);//头删void PopFront(…...

从零开始 TensorRT(7)C++ 篇:解析 ONNX

前言 学习资料&#xff1a; B站视频配套代码 cookbook 示例 参考源码&#xff1a;cookbook → 04-BuildEngineByONNXParser → pyTorch-ONNX-TensorRT 源码 C 代码量较多&#xff0c;已上传 GitHub OpenCV 安装&#xff1a; apt install libopencv-dev&#xff08;1&…...

k8s集群的CA证书过期处理

文章目录 制作延期的CA证书获取CA全名准备签发申请配置生成新CA验证并替换CA 更新master组件的CA配置kube-apiserverkube-controller-managerkube-schedulerkube-admin检查证书过期时间 更新ServiceAccount secret更新node组件配置的CA更新kubelet连接配置签发kubelet自动申请的…...

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…...

《探索虚拟与现实的边界:VR与AR谁更能引领未来?》

引言 在当今数字时代,虚拟现实(VR)和增强现实(AR)技术正以惊人的速度发展,并逐渐渗透到我们的日常生活中。它们正在重新定义人与技术、人与环境之间的关系,同时也为各行各业带来了全新的可能性。然而,究竟是VR还是AR更有潜力改变未来?本文将围绕这一问题展开深入探讨。…...

C++ 获取上一级文件夹路径

我们可能会经常遇到文件所在文件夹路径的问题&#xff0c;虽然各大平台也有提供方便快捷的API来实现&#xff0c;但是如果脱离平台本身&#xff0c;或者想实现跨平台的话&#xff0c;可以考虑用纯C的代码来实现这一需求 示例代码 #include <string> #include <ios…...

Apache Pulsar的分布式集群模式构建

1. 准备环境 6台带jdk8的Linux服务器&#xff08;CentOS7为例&#xff09; ip分别为&#xff1a; 主机名IP地址zookeeper1192.168.8.101zookeeper2192.168.8.102zookeeper3192.168.8.103pulsar1192.168.8.108pulsar2192.168.8.109pulsar3192.168.8.110 2. 下载Pulsar最新安…...

革命性监控工具ebpf_exporter:深度解析内核性能的终极指南

革命性监控工具ebpf_exporter&#xff1a;深度解析内核性能的终极指南 【免费下载链接】ebpf_exporter Prometheus exporter for custom eBPF metrics 项目地址: https://gitcode.com/gh_mirrors/eb/ebpf_exporter ebpf_exporter是一款基于eBPF技术的Prometheus exporte…...

Win10+VS2019配置vcpkg:从安装到项目集成的完整指南

1. 初识vcpkg&#xff1a;C开发者的效率神器 第一次接触vcpkg是在2018年接手一个跨平台C项目时&#xff0c;当时被各种第三方库的编译依赖折磨得够呛。vcpkg就像黑暗中的一束光&#xff0c;彻底改变了我的开发体验。简单来说&#xff0c;vcpkg是微软开源的C包管理工具&#xf…...

消息队列学习计划 - 阶段三:面试高频问题

消息队列学习计划 - 阶段三&#xff1a;面试高频问题目标&#xff1a;准备所有 MQ 相关面试问题&#xff0c;覆盖基础到进阶&#xff0c;能应对字节/腾讯等大厂面试 预计周期&#xff1a;1 周&#xff0c;每天 1-2 小时&#xff08;以记忆和模拟为主&#xff09;面试问题分类类…...

2025届毕业生推荐的降AI率方案推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于人工智能技术不断深入发展之际&#xff0c;“一键生成论文”功能已然成为学术写作范畴里的…...

如何通过drawio-libs图标库将专业图表绘制效率提升300%

如何通过drawio-libs图标库将专业图表绘制效率提升300% 【免费下载链接】drawio-libs Libraries for draw.io 项目地址: https://gitcode.com/gh_mirrors/dr/drawio-libs drawio-libs是一个为draw.io和diagrams.net提供丰富专业图标资源的开源库集合&#xff0c;涵盖网络…...

生物信息学与药物研发:CD6(淋巴细胞抗原)靶点的分子机制与技术应用解析

在生物制药与免疫学研究领域&#xff0c;CD6&#xff08;淋巴细胞抗原&#xff09;作为一个关键的共刺激分子&#xff0c;其在T细胞活化与自身免疫性疾病中的调控作用备受关注。本文将从分子结构、信号通路机制、以及药物研发技术路线三个维度&#xff0c;对CD6靶点进行系统性的…...

《数论探微:进阶版》(Arithmetic Tales: Advanced Edition)俗

一、核心问题及解决方案&#xff08;按踩坑频率排序&#xff09; 问题 1&#xff1a;误删他人持有锁——最基础也最易犯的漏洞 成因&#xff1a;释放锁时未做身份校验&#xff0c;直接执行 DEL 命令删除键。典型场景&#xff1a;服务 A 持有锁后&#xff0c;业务逻辑耗时超过锁…...

为什么File Browser是自建云端文件管理的最佳选择?3步打造个人文件中心

为什么File Browser是自建云端文件管理的最佳选择&#xff1f;3步打造个人文件中心 【免费下载链接】filebrowser &#x1f4c2; Web File Browser 项目地址: https://gitcode.com/gh_mirrors/fi/filebrowser 还在为跨设备访问文件而烦恼吗&#xff1f;是否厌倦了在多个…...

AIAgent仿真环境搭建终极清单(2024Q3最新):覆盖Unity ML-Agents v4.0、Isaac Sim 2024.1、Meta’s Habitat 3.2 兼容矩阵与迁移路径

第一章&#xff1a;AIAgent架构中的仿真环境搭建 2026奇点智能技术大会(https://ml-summit.org) 仿真环境是AIAgent训练与验证的核心基础设施&#xff0c;它需精确复现真实世界的状态演化、动作反馈与多智能体交互逻辑。一个健壮的仿真环境不仅提供高保真物理/逻辑建模能力&am…...

Python高效处理多层嵌套文件夹中的批量NC文件——以海洋数据为例

1. 海洋数据处理中的多层嵌套文件夹挑战 第一次处理海洋数据时&#xff0c;我被那些层层嵌套的文件夹搞得头晕眼花。想象一下这样的场景&#xff1a;你的硬盘里有个名为"Argo_Data"的文件夹&#xff0c;打开后看到"太平洋"、"大西洋"、"印度…...