数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)
螺旋矩阵
- https://leetcode.cn/problems/spiral-matrix/
描述
- 给你一个 m 行 n 列的矩阵 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]
提示
- m == matrix.length
- n == matrix[i].length
- 1 <= m, n <= 10
- -100 <= matrix[i][j] <= 100
算法实现
1 )减而治之递归实现
function spiralOrder(matrix: number[][]): number[] {// 处理每一圈的数据遍历过程const map = (arr: number[][], r: number[] = []) => {// 第一圈的遍历:遍历的时候不会按照 if else if 的顺序遍历,而是会按照一行一行的遍历,所以最终顺序不用担心for (let i = 0, len = arr.length; i < len; i++) {if (i === 0) {r = r.concat(arr[i])} else if (i === len - 1) {r = r.concat(arr[i].reverse())} else {// 增加边界检查if (arr[i].length) {r.push(arr[i].pop())}}}arr.shift() // 减而治之:移除第一行arr.pop() // 减而治之:移除最后一行// 第一圈最后的遍历: 倒序,从下到上for (let i = arr.length - 1; i >= 0; i--) {// 边界检查if (arr[i].length) {r.push(arr[i].shift())}}// 边界判断,是否还有,有则进行递归if (arr.length) {return map(arr, r)}// 没有直接返回return r;}return map(matrix, [])
};
- 没办法一次性一圈圈的描述出来,但是可以把一圈的过程描述出来
- 描述一圈经历了几件事: 顺时针
- 二维矩阵第一行 (从做到右)
- 二维矩阵最后一列 (从上到下)
- 二维矩阵倒数第一行 (从右到左)
- 二维矩阵第一列 (从下到上)
- 整体算法
- 先遍历第一圈,减而治之
- 如果还有,则递归实现
相关文章:
数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)
螺旋矩阵 https://leetcode.cn/problems/spiral-matrix/ 描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示…...
LVS+keepalived高可用负载均衡集群
keepalived介绍 keepalived为LVS应运而生的高可用服务。LVS的调度器无法做高可用,于是keepalived这个软件。实现的是调度器的高可用。 但是keepalived不是专门为LVS集群服务的,也可以做其他代理服务器的高可用。 LVS高可用集群的组成 主调度器备调度器&…...
解密Kubernetes:探索开源容器编排工具的内核
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
苹果手机怎么设置壁纸?解锁设置壁纸的2种方法!
手机壁纸便是我们常说的屏幕背景图,一张好看的手机壁纸能使我们的心情变得愉悦。这个壁纸可以是风景、美食、喜欢的偶像、自己养的宠物,或者是你的家人、朋友。 拥有特殊含义的照片会更让人想要设置成壁纸。苹果手机怎么设置壁纸?本文将给大…...
解决LOGITECH 罗技驱动 MAC版出现的一些问题汇总!
安装前将之前的安装文件清理干净!!!!! 罗技驱动最新安装包下载 我的鼠标是G304 1. 驱动安装一直卡在99% 运行官方下载的安装程序,卡住后关掉窗口。 在终端中执行以下命令: sudo /Users/用户名…...
PyQt5入门4——给目标检测算法构建一个简单的界面
PyQt5入门4——给目标检测算法构建一个简单的界面 学习前言要构建怎么样的界面实例使用1、窗口构建a、按钮:获取图片b、Inputs、Outputs文本提示c、Inputs、Outputs图片显示d、箭头显示e、整点祝福 2、主程序运行 全部代码 学习前言 搞搞可视化界面哈,虽…...
Pandas数据分析系列9-数据透视与行列转换
Pandas 数据透视表 当数据量较大时,为了更好的分析数据特征,通常会采用数据透视表。数据透视表是一种对数据进行汇总和分析的工具,通过重新排列和聚合原始数据,可以快速获得更全面的数据洞察。数据透视表在Excel中也是经常使用的一个强大功能,在Pandas模块,其提供了pivot…...
部分背包问题细节(贪心)
有一种情况是,背包可以把金币全部拿走: 如果num小于0则返回值...
windows协议详解之-RPC/SMB/LDAP/LSA/SAM域控协议关系
如果你在windows域控环境中,例如企业的网络中开启wireshark抓包,你一定会遇到一大堆各种各样的协议。不同于互联网服务(大多基于HTTP),为了实现域控中各种各样的服务,windows的域控环境中采用了非常多的协议…...
uniapp中 background-image 设置背景图片不展示问题
有问题 <view class"file-picker__box jsz" tap"jszxszUpload(jsz)"></view>.jsz {background-image: url(../../static/example_drive.png); }解决1 <view class"file-picker__box jsz" :style"{ background-image: url(…...
Elasticsearch打分机制
一 例子 xx搜索引擎,就搜索结果本身而言,xx返回了正确的结果。因为返回的结果中,都包含了搜索的关键字。而我们从逻辑上来看,这一堆广告算是咋回事!这个吐槽是从用户的角度出发的。很显然,返回的结果中,尤其是前几条,有时甚至是前几页,都跟我们想要的结果相差深远! …...
【pdf密码】为什么我的PDF文件不能复制文字?
大家现在接触PDF文件越来越多,有的时候在网上下载的PDF文件打开之后,发现选中文字之后无法复制。甚至其他功能也都无法使用,这是怎么回事?该怎么办? 当我们发现文件打开之后,编辑功能无法使用,很…...
vim程序编辑器
最近读书读完感觉没有读一样,所以决定写笔记记录下 vi的使用包括三种模式 一般模式 编辑模式 a,i,o,r,A,I,O,R 用来插入或者替换内容 命令行模式 :wq保存退出:wq!强制保存退出…...
新手如何学习挖漏洞?看这篇就够了【网络安全】
什么是漏洞挖掘 漏洞挖掘是指通过分析软件、系统或网络中存在的安全漏洞来发现并利用这些漏洞。漏洞挖掘是信息安全领域的一项重要工作,可以帮助企业和组织提高系统的安全性,避免黑客攻击和数据泄露。 漏洞挖掘的流程一般可以概括为以下几个步骤&#x…...
CentOS 7.8 kubeadm安装 k8s 1.26
CentOS 7.8 kubeadm安装 k8s 1.26 规划 集群 主机名IP地址k8s-master01192.168.200.101k8s-master02192.168.200.102k8s-master03192.168.200.103k8s-node01192.168.200.201k8s-node02192.168.200.202 VIP(虚拟IP) 192.168.200.80 Harbor http://192.168.200.50 基础 …...
成都瀚网科技有限公司抖音小店:创新营销引领电商潮流
在当今数字化时代,抖音作为一款备受欢迎的短视频平台,不仅吸引了大量用户的关注,还为众多电商企业提供了新的销售渠道。成都瀚网科技有限公司抖音小店便是其中之一,凭借其独特的营销策略和优质的产品,成为了抖音电商领…...
警惕!又2本期刊被“On Hold”!
【SciencePub学术】 此前,继一本SSCI期刊被取消“On hold”标识后,仍处于“On Hold”状态的期刊有6本,其中包括4本SCI期刊和2本ESCI期刊。近日,经小编查询,又新增2本“On Hold”期刊,详情如下:…...
一台服务器成了哆啦A梦的神奇口袋
如果我有一台服务器,那简直就像打开了哆啦A梦的神奇口袋!可以做的事情可太多啦,比如: 学习和探险 首先嘛,当然是用来学习和探险啦!我可以安装和配置各种操作系统、编程语言和工具,深入了解计…...
java 关闭access文件资源后,无法删除文件
复现问题 // 数据库驱动String DRIVER_CLASS "net.ucanaccess.jdbc.UcanaccessDriver";// 数据库连接地址String DB_URL "jdbc:ucanaccess://D/test.mdb";String DB_USER ""; // 数据库用户名称String DB_PASSWORD "";// 数据库用…...
Typecho 添加 Emoji 表情报错「解决方案」
Typecho 添加 Emoji 表情报错 文章目录 Typecho 添加 Emoji 表情报错前言Emoji 表情utf8mb4 与 UTF8 解决方案[1] 数据库编码更改[2] 数据库配置文件更改 前言 Typecho 添加 Emoji 表情不支持,报错 Database Query Error Emoji 表情 Emoji 就是表情符号,…...
从零到精通:Unity Timeline信号(Signal)与自定义轨道(Playable Track)的保姆级教程
从零到精通:Unity Timeline信号与自定义轨道实战指南 在Unity中制作电影级过场动画时,Timeline无疑是开发者最强大的工具之一。但许多开发者仅仅停留在基础动画剪辑的层面,未能充分挖掘其深度交互潜力。本文将带您突破常规用法,探…...
USB-Disk-Ejector:告别“设备正在使用“烦恼,Windows USB安全弹出终极指南
USB-Disk-Ejector:告别"设备正在使用"烦恼,Windows USB安全弹出终极指南 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It …...
HEC-RAS 5.0.7实战:从模型结果到ArcGIS,一步步教你生成并导出淹没范围SHP文件
HEC-RAS 5.0.7与ArcGIS联合作战:专业级淹没分析全流程指南 水利工程师在完成HEC-RAS模型计算后,常面临一个关键挑战:如何将模拟结果转化为实际项目所需的GIS数据?本文将以HEC-RAS 5.0.7为例,详细拆解从模型结果到ArcGI…...
Apollo2 BLE自定义服务开发指南:GATT数据库配置与回调实现
1. 项目概述与核心价值最近在折腾一个基于Apollo2 Blue的低功耗蓝牙项目,需要自定义一个服务(Service)来实现特定的数据交互功能。如果你也在用Ambiq Micro的Apollo2或Apollo3 Blue系列芯片做BLE开发,大概率会遇到类似的需求&…...
突破60帧限制!《原神》帧率解锁工具完全指南
突破60帧限制!《原神》帧率解锁工具完全指南 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》的60帧限制感到困扰吗?想让你的高刷新率显示器发挥真正…...
从电源拓扑到代码:STM32F103驱动移相全桥的软硬件协同设计实战
从电源拓扑到代码:STM32F103驱动移相全桥的软硬件协同设计实战 在中小功率开关电源和电机驱动领域,移相全桥拓扑因其优异的软开关特性和高效率表现,成为工程师们的首选方案之一。然而,将教科书上的拓扑原理转化为实际可用的电源产…...
RK3562核心板开发指南:从硬件设计到AI部署的全流程解析
1. 项目概述:从一颗芯片到一套完整的开发资源最近在嵌入式圈子里,RK3562这颗芯片的热度持续攀升。作为瑞芯微面向中高端AIoT和工业应用推出的新一代处理器,它凭借其均衡的CPU/GPU/NPU性能和出色的能效比,吸引了不少开发者的目光。…...
深耕 AI 全域布局,探词科技凭硬核实力领跑 GEO 新赛道
在人工智能全面渗透各行各业的当下,传统线上流量玩法逐渐触顶,依托大模型生态搭建品牌长效传播阵地,已然成为企业数字化转型的核心突破口。作为国内专注 AI 品牌全域布局的专业服务商,探词科技深耕 GEO 智能优化领域,凭…...
Linux音频驱动开发实战:为TLV320ADC5120编写ALSA Codec驱动
1. 项目概述:从一块“哑巴”音频芯片到Linux系统的“耳朵”最近在折腾一块基于TI TLV320ADC5120的音频采集板,想把它接到我的RK3568开发板上用。芯片手册、硬件原理图都齐了,但一上电,系统里arecord -l根本找不到设备,…...
VK视频下载器:三步实现VKontakte视频永久保存的实用方案
VK视频下载器:三步实现VKontakte视频永久保存的实用方案 【免费下载链接】VK-Video-Downloader Скачивайте видео с сайта ВКонтакте в желаемом качестве 项目地址: https://gitcode.com/gh_mirrors/vk/VK-Video…...
