力扣:59. 螺旋矩阵 II(Python3)
题目:
给你一个正整数
n
,生成一个包含1
到n2
所有元素,且元素按顺时针顺序螺旋排列的n x n
正方形矩阵matrix
。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:输入:n = 1
输出:[[1]]
解法:
创建全0二维列表,根据顺时针螺旋顺序修改值。
首先,初始化row为n - 1,表示当前可以遍历到的最大行,初始化col为n - 1,表示当前可以遍历到的最大列,初始化rh为1,表示当前可以遍历到的行最小值为1,初始化ch为0,表示当前可以遍历到的列的最小值为0,初始化r、c为0,表示当前位置,初始化flag为1,表示当前状态。
一共有4种状态,第1种是从左到右遍历,第2种是从上到下遍历,第3种是从右到左遍历,第4种是从下到上遍历。遍历的总次数是n,4种状态循环切换,直到遍历完,以下以第1种状态为例,第2、3、4种状态同理。
进入第1种状态,首先将修改列表r、c为当前值,然后判断是否走到最大行,注意,最大行指的是没有遍历的元素的最右边,通过col判断,如果没到最大行,则c自增1,如果到了,需要切换状态,并且将col自减1,表示缩小下次可遍历到的最大行,即去除已遍历元素,将r自增1,修改状态切换后的首位置。
知识点:
1.初始化二维列表:比如创建并初始化全0二维列表:result = [[0] * n for _ in range(n)],不要使用result = [[0] * n] * n,因为这样在修改值的时候,会把每列都修改。原因是因为Python的机制,*n并没有开辟新空间,都指向同一块内存,但加上[]会将括号内部看作一个整体,列表类型,开辟独立的空间。
代码:
class Solution:def generateMatrix(self, n: int) -> List[List[int]]:result = [[0] * n for _ in range(n)]row = col = n - 1rh = 1ch = 0flag = 1r = c = 0for num in range(n ** 2):if flag == 1:result[r][c] = num + 1if c == col:col -= 1r += 1flag = 2else:c += 1elif flag == 2:result[r][c] = num + 1if r == row:row -= 1c -= 1flag = 3else:r += 1elif flag == 3:result[r][c] = num + 1if c == ch:ch += 1r -= 1flag = 4else:c -= 1else:result[r][c] = num + 1if r == rh:rh += 1c += 1flag = 1else:r -= 1return result
相关文章:

力扣:59. 螺旋矩阵 II(Python3)
题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全…...

【electron】electron项目创建的方式:
文章目录 【1】npm init quick-start/electron(推荐)【2】 克隆仓库,快速启动【3】 通过脚手架搭建项目【4】 手动创建项目 【Electron官网】https://www.electronjs.org/zh/docs/latest/api/app 【1】npm init quick-start/electron…...
Vim学习(一)——基本命令与三种模式
写在前面, 致敬 8月3日,Vim创始人Bram Moolenaar去世,在此向老爷子致敬!感谢他为这个世界带来的优秀编辑器Vim。 基本介绍 Vim全称叫Vi IMproved. 而vi则是Visual Interface的缩写,他们处理都是ASCII码字符数据&am…...

unity新输入系统的简单使用(New InputSystem)
1、在包管理器 unity注册表中下载安装InputSystem 2、给玩家添加组件PlayerInput,点击CreatAction,创建一个InputAct InputAct,这是玩家的输入文件,在里面可以设置玩家输入 3、使用 例如玩家控制角色移动 在InputAct中,默认已经设置好了移…...

Redis——特性介绍与应用场景
Redis特性介绍 In-memory data structrues 众所周知,MySQL是一种关系型数据库,其通过表的结构存储数据,就类似于建立了一个excel表格来存储数据。但是像视频这类数据并不适合存储在关系型数据库中,因此存在非关系型数据库——通…...

网络:路由
1. 路由器 路由器工作在三层,每个接口都处于不用的网段中,即不同的广播域。但大多情况下,两台路由器直接相连的接口是同一个广播域,即一个网段。 路由器具有判断网络地址和选择路径的功能,能在多网络互联的环境中&…...

利用三维内容编辑器制作VR交互课件,简单好用易上手
随着虚拟现实技术的不断发展,越来越多的教育机构开始尝试将其应用于教育教学中。然而,要实现这一目标并不容易,需要专业的技术支持和开发团队。 为了解决这一问题,广州华锐互动研发了三维内容编辑器,它是一种基于虚拟现…...

中国首款量子计算机操作系统本源司南 PilotOS正式上线
中国安徽省量子计算工程研究中心近日宣布,中国国产量子计算机操作系统本源司南 PilotOS 客户端正式上线。 如果把量子芯片比喻成人的“心脏”,那么量子计算机操作系统就相当于人的“大脑”,量子计算应用软件则是人的“四肢”。 据安徽省量子…...

基层社会治理平台建设方案[113页PPT]
导读:原文《基层社会治理平台建设方案[113页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需获取完…...
认识vite
一.了解vite的不同版本的更新 vite1版本是基于vue项目的,无法跨框架使用vite2可以跨框架(vue2,vue3,react)vite3模板变更;vite cli优化;import.meta.glob API变化;其他vite4主版本主…...

华为运动健康,十年创新天地宽
我听一位朋友讲过这样一个故事。某天早上,急诊科的医生迎来了一位患者,患者进来后直接说:“大夫,我房颤了。” 这位医生非常诧异,因为心脏房颤确实非常危急,但很多时候并没有明显的生理体征,患者…...

深度学习(37)—— 图神经网络GNN(2)
深度学习(37)—— 图神经网络GNN(2) 这一期主要是一些简单示例,针对不同的情况,使用的数据都是torch_geometric的内置数据集 文章目录 深度学习(37)—— 图神经网络GNN(…...

Unity游戏源码分享-乐节奏休闲游戏源码 guitar hero 支持mobile
Unity游戏源码分享-乐节奏休闲游戏源码 guitar hero 支持mobile 完整版下载地址:https://download.csdn.net/download/Highning0007/88198766...

VS Code配置Prettier格式化Apex
先决条件 安装nodejs和npm安装vs code安装salesforce extension pack 配置Prettier Apex 创建本地Salesforce项目 (Standard) command shift p -> SFDX: Create Project with Manifest -> Standard 打开terminal运行npm init生成package.json文件 安装prettier ap…...
Spring-Cloud-Loadblancer详细分析_4
在RoundRobinLoadBalancer.choose中的serviceInstanceListSupplierProvider就是获取服务列表的关键,那么此对象是怎么拿到的呢,让我们回到RoundRobinLoadBalancer的创建过程 Configuration(proxyBeanMethods false) ConditionalOnDiscoveryEnabled pub…...

openocd调试esp32(通过FT232H)
之前在学习ESP32,其中有一部分课程是学习openocd通过JTAG调试程序的,因为我用的是ESP32-wroom,usb端口没有集成对应的usb转jtag的ft232,查了ESP32相关的资料(JTAG 调试 - ESP32 - — ESP-IDF 编程指南 latest 文档 (es…...
Nokia5110使用方法及实例编写51单片机
文章目录 Nokia5110实物图引脚和原理图51单片机实例软件模拟SPI实现控制Nokia5110显示字符发送字节时序图(图片太多了,关键图片已截取出来)初始化需要配置实例编写回顾接线结束Nokia5110 Nokia是诺基亚拆下来的屏幕。使用SPI控制 84x48 的点阵 LCD,可以显示 4 行汉字,采用…...

3个月快速入门LoRa物联网传感器开发
在这里插入图片描述 快速入门LoRa物联网传感器开发 LoRa作为一种LPWAN(低功耗广域网络)无线通信技术,非常适合物联网传感器和行业应用。要快速掌握LoRa开发,需要系统学习理论知识,并通过实际项目积累经验。 摘要: 先学习LoRa基础知识:原理、网络架构、协议等,大概需要2周时间…...

【小梦C嘎嘎——启航篇】内存管理小知识~
【小梦C嘎嘎——启航篇】内存管理小知识~😎 前言🙌malloc/calloc/realloc的区别?new 与 deletenew与delete要找好搭档才能保证万无一失 new 与 delete的内部实现细节是怎么样的呢???new 的内部实现细节dele…...
ClickHouse查看执行计划(EXPLAIN语法)
1.EXPLAIN 语法示例 EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE] [setting value, ...] [ SELECT ... | tableFunction(...) [COLUMNS (...)] [ORDER BY ...] [PARTITION BY ...] [PRIMARY KEY] [SAMPLE BY ...] [T…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...

对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...