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

数据结构与算法之矩阵: 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 &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示…...

LVS+keepalived高可用负载均衡集群

keepalived介绍 keepalived为LVS应运而生的高可用服务。LVS的调度器无法做高可用&#xff0c;于是keepalived这个软件。实现的是调度器的高可用。 但是keepalived不是专门为LVS集群服务的&#xff0c;也可以做其他代理服务器的高可用。 LVS高可用集群的组成 主调度器备调度器&…...

解密Kubernetes:探索开源容器编排工具的内核

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

苹果手机怎么设置壁纸?解锁设置壁纸的2种方法!

手机壁纸便是我们常说的屏幕背景图&#xff0c;一张好看的手机壁纸能使我们的心情变得愉悦。这个壁纸可以是风景、美食、喜欢的偶像、自己养的宠物&#xff0c;或者是你的家人、朋友。 拥有特殊含义的照片会更让人想要设置成壁纸。苹果手机怎么设置壁纸&#xff1f;本文将给大…...

解决LOGITECH 罗技驱动 MAC版出现的一些问题汇总!

安装前将之前的安装文件清理干净&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 罗技驱动最新安装包下载 我的鼠标是G304 1. 驱动安装一直卡在99% 运行官方下载的安装程序&#xff0c;卡住后关掉窗口。 在终端中执行以下命令&#xff1a; sudo /Users/用户名…...

PyQt5入门4——给目标检测算法构建一个简单的界面

PyQt5入门4——给目标检测算法构建一个简单的界面 学习前言要构建怎么样的界面实例使用1、窗口构建a、按钮&#xff1a;获取图片b、Inputs、Outputs文本提示c、Inputs、Outputs图片显示d、箭头显示e、整点祝福 2、主程序运行 全部代码 学习前言 搞搞可视化界面哈&#xff0c;虽…...

Pandas数据分析系列9-数据透视与行列转换

Pandas 数据透视表 当数据量较大时,为了更好的分析数据特征,通常会采用数据透视表。数据透视表是一种对数据进行汇总和分析的工具,通过重新排列和聚合原始数据,可以快速获得更全面的数据洞察。数据透视表在Excel中也是经常使用的一个强大功能,在Pandas模块,其提供了pivot…...

部分背包问题细节(贪心)

有一种情况是&#xff0c;背包可以把金币全部拿走&#xff1a; 如果num小于0则返回值...

windows协议详解之-RPC/SMB/LDAP/LSA/SAM域控协议关系

如果你在windows域控环境中&#xff0c;例如企业的网络中开启wireshark抓包&#xff0c;你一定会遇到一大堆各种各样的协议。不同于互联网服务&#xff08;大多基于HTTP&#xff09;&#xff0c;为了实现域控中各种各样的服务&#xff0c;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文件越来越多&#xff0c;有的时候在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很…...

vim程序编辑器

最近读书读完感觉没有读一样&#xff0c;所以决定写笔记记录下 vi的使用包括三种模式 一般模式 编辑模式 a&#xff0c;i&#xff0c;o&#xff0c;r&#xff0c;A,I,O,R 用来插入或者替换内容 命令行模式 &#xff1a;wq保存退出&#xff1a;wq!强制保存退出&#xf…...

新手如何学习挖漏洞?看这篇就够了【网络安全】

什么是漏洞挖掘 漏洞挖掘是指通过分析软件、系统或网络中存在的安全漏洞来发现并利用这些漏洞。漏洞挖掘是信息安全领域的一项重要工作&#xff0c;可以帮助企业和组织提高系统的安全性&#xff0c;避免黑客攻击和数据泄露。 漏洞挖掘的流程一般可以概括为以下几个步骤&#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 基础 …...

成都瀚网科技有限公司抖音小店:创新营销引领电商潮流

在当今数字化时代&#xff0c;抖音作为一款备受欢迎的短视频平台&#xff0c;不仅吸引了大量用户的关注&#xff0c;还为众多电商企业提供了新的销售渠道。成都瀚网科技有限公司抖音小店便是其中之一&#xff0c;凭借其独特的营销策略和优质的产品&#xff0c;成为了抖音电商领…...

警惕!又2本期刊被“On Hold”!

【SciencePub学术】 此前&#xff0c;继一本SSCI期刊被取消“On hold”标识后&#xff0c;仍处于“On Hold”状态的期刊有6本&#xff0c;其中包括4本SCI期刊和2本ESCI期刊。近日&#xff0c;经小编查询&#xff0c;又新增2本“On Hold”期刊&#xff0c;详情如下&#xff1a;…...

一台服务器成了哆啦A梦的神奇口袋

如果我有一台服务器&#xff0c;那简直就像打开了哆啦A梦的神奇口袋&#xff01;可以做的事情可太多啦&#xff0c;比如&#xff1a; 学习和探险 首先嘛&#xff0c;当然是用来学习和探险啦&#xff01;我可以安装和配置各种操作系统、编程语言和工具&#xff0c;深入了解计…...

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 表情不支持&#xff0c;报错 Database Query Error Emoji 表情 Emoji 就是表情符号&#xff0c…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...