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

LeetCode54 螺旋矩阵

给你一个mn列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。

示例1

在这里插入图片描述

输入: matrix = [[1,2,3],[4,5,6],[7,8,9]
输出: [1,2,3,6,9,8,7,4,5]

示例2

在这里插入图片描述

输入: matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

分析

1.暴力解法:利用已知的行列数循环输出。(时间复杂度高,不推荐)
2.状态表解法
从示例中可以看出来,输出遵守四个方向,依次是:右,下,左,上。对于数组元素 element [ i ] [ j ] \text{element}[i][j] element[i][j],四种状态分别对应着 j + 1 j+1 j+1, i + 1 i+1 i+1, j − 1 j-1 j1, i − 1 i-1 i1
那么如何更新状态?有两个限制条件
1)首先是矩阵的长度宽度;2)这个矩阵元素是否被遍历过了;
第二个条件就需要另外开辟一个状态矩阵,初始化为 m × n m \times n m×n大小的0矩阵,若遍历过,元素状态变为1。

Code

def spiraOrder(matrix):row_num = len(matrix)col_num = len(matrix[0])# state_list = []state_list = [[0 for _ in range(row_num)] for _ in range(col_num)]total_num = row_num * col_numdirection_list = [[0, 1], [1, 0], [0, -1], [-1, 0]]direction_index = 0row, col = 0, 0res_list = []for i in range(total_num):res_list.append(matrix[row][col])state_list[row][col] = 1# print(state_list)next_row = row + direction_list[direction_index][0]next_col = col + direction_list[direction_index][1]if next_row < 0 or next_col < 0 or next_col >= col_num or next_row >= row_num or state_list[next_row][next_col]:direction_index = (direction_index + 1) % 4# print("index: ", direction_index)row += direction_list[direction_index][0]col += direction_list[direction_index][1]return res_list
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]print(spiraOrder(matrix)) # [1, 2, 3, 6, 9, 8, 7, 4, 5]

相关文章:

LeetCode54 螺旋矩阵

给你一个m行n列的矩阵matrix&#xff0c;请按照顺时针螺旋顺序&#xff0c;返回矩阵中的所有元素。 示例1 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9] 输出&#xff1a; [1,2,3,6,9,8,7,4,5] 示例2 输入&#xff1a; matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出…...

qt实现简单计算器推荐博客

Qt5简单函数计q算q器_ouening的博客-CSDN博客 基于QT的科学计算器_杜康o的博客-CSDN博客_qt科学计算器 Qt5 计算器的实现_salmonwilliam的博客-CSDN博客 Qt计算器界面的实现_洋葱汪的博客-CSDN博客_qt计算器界面设计 8.用C/C实现一个科学计算器———&#xff08;超级详细完…...

各数据库分页语法支持

Mycat后端通过jdbc接入oracle、db2、sqlserver、postgresql等通过以下2种方式支持分页语法 数据库原生分页直接解析 应用端可以通过直接执行原生分页sql到mycat&#xff0c;各数据库原生分页支持如下&#xff1a; oracle支持三层嵌套和row_number两种分页&#xff0c;以及ro…...

牛牛截图控件与利洽远程控制产品升级-支持证书自动升级

今天我们来聊一聊浏览器控件的一个痛点&#xff01;看看我们是如何解决他的。 背景信息 目前市面上存在多种浏览器&#xff0c;IE、Chrome、Firefox、Edge以及一众国产浏览器&#xff0c;这些浏览器中&#xff0c;IE支持ActiveX&#xff0c;部分国产浏览器支持npapi&#xff…...

06-jQuery-DOM操作-属性操作-attr()\prop()\addClass()\toggleClass()等

一、通用属性操作 1、attr() 方法&#xff1a;主要用于获取或设置 HTML 元素的属性值&#xff0c;它接受一个参数或两个参数&#xff0c;当传递一个参数时&#xff0c;它返回指定属性名的属性值&#xff1b;当传递两个参数时&#xff0c;它设置指定属性名的属性值为指定的值。…...

接口自动化框架(Pytest+request+Allure)

前言&#xff1a; 接口自动化是指模拟程序接口层面的自动化&#xff0c;由于接口不易变更&#xff0c;维护成本更小&#xff0c;所以深受各大公司的喜爱。 接口自动化包含2个部分&#xff0c;功能性的接口自动化测试和并发接口自动化测试。 本次文章着重介绍第一种&#xff0c…...

2. 流程控制语句

2. 流程控制语句 2-1. prompt() 弹出一个对话框&#xff0c;用户可以输入内容&#xff0c;输入的内容可以通过变量接收 2-2. if…else if …else 语法&#xff1a; if(条件表达式1){ ​ 条件表达式1为真执行 ​ if(){ ​ }else{ ​ } }else { ​ 条件表达式1为假执行 } if els…...

为了流量,何同学做了个“假B站”?

何同学是B站知名数码博主&#xff0c;凭借优秀的视频制作能力&#xff0c;内容创新获得广大年轻用户的喜欢。 2021年的时候&#xff0c;UP主老师好我叫何同学就发布了一条制作AirDesk的视频&#xff0c;随后迅速在社交媒体中引发了大量关注。 当时&#xff0c;该视频为B站全站…...

腾讯云图形验证码申请流程

目录 一、官方指引二、操作步骤1.步骤1&#xff1a;新建验证&#xff0c;获取验证码密钥2.步骤2&#xff1a;客户端接入验证码&#xff0c;展示验证页面3.步骤3&#xff1a;服务端接入验证码&#xff0c;调用票据校验 API 进行二次校验 一、官方指引 https://cloud.tencent.co…...

浅谈管网抢维修效率对产销差率的影响

1 背景 多年来&#xff0c;漏损治理工作一直围绕检漏、分区计量或压力管理等相关话题&#xff0c;却忽视了抢维修速度与质量对漏损治理成效的影响。实际上&#xff0c;不管是DMA分区计量&#xff0c;还是检漏&#xff0c;最终还是要通过抢维修来修复漏点达到控制漏损的目的。尽…...

java设备台账管理系统myeclipse定制开发mysql数据库网页模式java编程jdbc

一、源码特点 java设备台账管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助 mysql数据库&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 java设备台账管理系统myeclipse定制开发mysql 二、功能介绍 此次系统…...

ChatGPT帮你写简历找工作

随着随着毕业时间的到来&#xff0c;应届生将要面临求职问题&#xff0c;根据官方的统计&#xff0c;2023届高校毕业生预计达1158万人&#xff0c;就业市场竞争激烈&#xff0c;无论是校园招聘&#xff0c;招聘会&#xff0c;线上招聘除了自身的准备和个人能力&#xff0c;都会…...

CentOS 8.5和CentOS8.4安装-解决Error setting up base repository问题

CentOS 8 内核采用了python3.6,而CentOS 7还是python2.7,对于想要用GPU服务器进行机器学习方面的工作,还是用python3.6的内核更好些。 CentOS 8 的新特性 DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的 使用网络管理器( nmcli 和 nmtui)进行网络配置,移除了网络脚…...

数据抓取使用HTTP隧道代码示例

以下是使用Python的requests库实现HTTP隧道的代码示例&#xff1a; python import requests # 设置代理服务器地址和端口号 proxy_host 127.0.0.1 proxy_port 8888 # 设置目标网站URL url Example Domain # 创建Session对象 session requests.Session() # 设置代理服务…...

vue3【使用axios并封装axios请求】

第一步&#xff1a;安装axios npm install axios 第二步&#xff1a;编写请求文件 新建request.js 简单的axios封装&#xff0c;里面相关提示信息&#xff0c;自己可以引入element-plus去添加 /**axios封装* 请求拦截、相应拦截、错误统一处理*/ import axios from axios; i…...

「实验记录」MIT 6.824 Raft Lab2C Persist

#Lab2C - Persist I. SourceII. My CodeIII. MotivationIV. SolutionS1 - 实现persist()S2 - 实现readPersist()S3 - 持久化三字段S4 - 在newRaft()中初始化nextIdxs和matchIdxsS5 - 适当缩短心跳时间 V. Result I. Source MIT-6.824 2020 课程官网Lab2: Raft 实验主页simviso…...

软件详细设计总复习(三)【太原理工大学】

题型及分值&#xff1a; 选择 30 分&#xff0c;填空 20 分&#xff0c; 判断 10 分&#xff0c;简答 20 分&#xff0c;综合设计 20 分。 文章目录 三、行为型模式1. 命令模式2. 迭代器模式3. 观察者模式4. 状态模式5. 策略模式 三、行为型模式 1. 命令模式 举个例子&#x…...

Vue3(一):创建vue3工程、setup、vue3响应式原理、computed和watch

Vue3&#xff1a;第一章 一、创建Vue3.0工程1.使用vue-cli创建2.使用vite创建 二、Vue3中的响应式1.拉开序幕的setup2.ref函数3.reactive函数4.vue3中响应式的原理&#xff08;1&#xff09;vue2中响应式原理&#xff08;2&#xff09;Vue3中的Proxy 5.reactive和ref的对比6.se…...

Spring中的@Value注解详解

Spring中的Value注解详解 概述 本文配置文件为yml文件 在使用spring框架的项目中&#xff0c;Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中&#xff0c;我们常用的功能相对简单。本文使您系统地了解Value的用法。 Value…...

YSL赢麻了?SMI社媒心智品牌榜Top20公布:YSL破局夺魁,国货品牌现后起之秀

全文速览 1.数说故事联合用户说从美妆、彩妆、护肤三板块全新发布《SMI社媒心智品牌榜》。 2.圣罗兰、兰蔻、欧莱雅等法国高端美妆大牌垄断美妆《SMI社媒心智品牌榜》前三甲。 3.彩妆Top20榜单中&#xff0c;底妆产品稳居前列&#xff0c;色彩美妆占据一席之地。 4.护肤TOP…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...