【刷题日记】螺旋矩阵

54. 螺旋矩阵

这个是一道模拟题,但我记得我大一第一次做这道题的时候真的就是纯按步骤模拟,没有对代码就行优化,导致代码写的很臃肿。

有这么几个地方可以改进。

  • 看题目可以知道最终的结果一定是rows*cols个结点,所以只需要遍历rows*cols次
  • 把遍历顺序用方向数组来控制走向
  • 判断是否要顺时针旋转一次时,只需要 " !(符合条件情况)" 即可

具体实现细节可以看我代码里的注释

//模拟
var spiralOrder = function (matrix) {const rows = matrix.length, cols = matrix[0].length;if (!rows || !cols) return [];const books = new Array(rows).fill(0).map(() => new Array(cols).fill(0));//标记let sum = rows * cols;//总点数const ans = [];//结果数组//方向const direction = [[0, 1], [1, 0], [0, -1], [-1, 0]];let index = 0, row = 0, col = 0;while (sum--) {if (ans.length === rows * cols) break;ans.push(matrix[row][col]);books[row][col] = 1;//按照原方向走的下一步const newRow = row + direction[index][0];const newCol = col + direction[index][1];if (!(newRow < rows && newRow >= 0 && newCol >= 0 && newCol < cols && books[newRow][newCol] === 0)) {//判断是否要变成下一个方向(!包裹,所以括号里只需要写符合条件的条件就行)index = (index + 1) % 4;}//更新下一步坐标row += direction[index][0];col += direction[index][1];}return ans;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143044.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

java十进制码、六进制码和字符码的转换

一、字符转换为ASCII码&#xff1a; int i(int)1; 二、ASCII码转换为字符&#xff1a; char ch (char)40; 三、十六进制码转换为字符&#xff1a; char charValue (char)\u0040; package week3;public class check_point4_8 {public static void main(String[] args) {S…

Java 性能调优:优化 GC 线程设置

垃圾回收器使用一组称为 GC 线程的线程来执行回收工作。有时 JVM 可能会分配过多或过少的 GC 线程。本文将讨论 JVM 为什么会出现这种情况、其影响以及可能的解决方案。 1 咋查找应用程序的 GC 线程数量 进行线程转储分析来确定应用程序的 GC 线程数量&#xff1a; 从生产服…

【算法思想·二叉搜索树】基操篇

本文参考labuladong算法笔记[二叉搜索树心法&#xff08;基操篇&#xff09; | labuladong 的算法笔记] 1、概述 我们前文 东哥带你刷二叉搜索树&#xff08;特性篇&#xff09; 介绍了 BST 的基本特性&#xff0c;还利用二叉搜索树「中序遍历有序」的特性来解决了几道题目&am…

MathType7.9绿色和谐版激活补丁包下载

MathType7.9中文版&#xff1a;让你的数学公式更酷炫✨ 嘿&#xff0c;亲爱的数学迷们&#xff01;今天我要给你们安利一款超级炫酷的数学公式编辑器——MathType7.9中文版。这款软件不仅能让你轻松输入各种复杂的数学公式&#xff0c;还能让你的公式看起来更加酷炫哦&#xf…

Java项目——苍穹外卖(二)

Redis 简介 Redis是一个基于内存的key-value结构数据库 基于内存存储&#xff0c;读写性能高适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09;企业应用广泛 基础操作 启动 在redis安装目录中打开cmd&#xff0c;输入如上图指令即可启动&#xff0c;按下crtl…

【嘉立创EDA】画PCB板中为什么要两面铺铜为GND,不能一面GND一面VCC吗?

在新手画板子铺铜时&#xff0c;经常会铺一面GND一面VCC。但一般情况下我们不会这样铺铜。下面将详细分析为什么要两面铺铜为GND&#xff0c;而不是一面GND一面VCC的原因&#xff1a; 提高散热能力 金属导热性&#xff1a;金属具有良好的导热性&#xff0c;铺铜可以有效分散PCB…

unity的学习

因为需要构建一个三维物理环境,所以学习了unity,半天就可以,非常简单清晰 1.安装 去官网下载unity hub . 然后需要下载editor,但注意已经有了vs2022就不要再下一次了,下的时候会全放c盘,再安装.c盘都装不下了. 如果美游vs2022,就先自己把vs2022安装好,再安装unity hub.(其实不…

基于YOLOv5的农作物叶片病害识别系统

植物农作物叶片病虫害识别系统&#xff1a;农作物叶片病害AI检测与识别系统 源码 带UI界面说明视频 模型&#xff1a;yolov5 功能: 农作物叶片病害检测系统用于智能检测常见农作物叶片病害情况&#xff0c;自动化标注、记录和保存病害位置和类型&#xff0c;辅助作物病害防治以…

MyBatis XML映射文件编写【后端 18】

MyBatis XML映射文件编写 MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射&#xff0c;将接口和 Java 的 POJOs …

红帽7—Mysql的源码编译

到官网选择源码进行安装 使用wget命令下载链接 下载安装后对文件包进行解压 [rootnginx ~]# tar zxf mysql-boost-5.7.44.tar.gz 安装cmake编译工具 [rootnginx ~]# yum install cmake 使用源码编译安装mysql [rootmysql-node10 mysql-5.7.44]# cmake \ -DCMAKE_INSTALL_PRE…

6个Python小游戏项目源码【免费】

6个Python小游戏项目源码 源码下载地址&#xff1a; 6个Python小游戏项目源码 提取码: bfh3

Stable diffusion 学习过程

diffusion model 讲解&#xff1a; 【较真系列】讲人话-Diffusion Model全解(原理代码公式)_哔哩哔哩_bilibili stable diffusion【CVPR2022】 原始论文&#xff1a; https://arxiv.org/pdf/2112.10752 讲解&#xff1a;【论文简介】Stable Diffusion的基础论文:2112.High…

JZ2440开发板——S3C2440的UART的使用

以下内容源于韦东山课程的学习与整理&#xff0c;如有侵权请告知删除。 一、UART硬件简介 UART&#xff0c;全称是“Universal Asynchronous Receiver Transmitter”&#xff0c;即“通用异步收发器”&#xff0c;也就是我们日常说的“串口”。 它在嵌入式中用途非常广泛&…

牛客周赛 Round 60(下)

构造序列 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include <iostream> #include<stdio.h> #include<math.h> using namespace std; int main() {int n, m;cin >> n >> m;int minVal min(n, m);int maxVal max(n, m);cout …

右值生命周期的延长

第一个例子&#xff1a; output&#xff1a; result&#xff08;&#xff09;创建了一个临时对象&#xff0c;它是一个右值&#xff0c;通过结果我们可以看到直到main函数结束时这个对象才调用了析构函数&#xff1b; result&#xff08;&#xff09;返回右值&#xff0c;我…

面向对象分析与设计-系统架构师(六十七)

1网络设计过程包括逻辑网络设计和物理网络设计两个阶段&#xff0c;下面的选项中&#xff0c;&#xff08;&#xff09;应该属于逻辑网络设计阶段的任务。 A选择路由协议 B设备选型 C结构化布线 D机房设计 解析&#xff1a; 物理网络设计的内容包括&#xff1a;设备选型、…

pdf去水印怎么去掉免费?6个pdf去除水印的方法快码住,超级好用!

pdf去水印怎么去掉免费&#xff1f;您是否有一些带有水印的pdf文档&#xff0c;让您感觉到头疼&#xff1f;您又是否希望能够去除这些水印&#xff0c;或者想用其他水印来替换现有的水印&#xff1f;如果是这样的话&#xff0c;我非常推荐您继续阅读本篇文章。本文将为您提供一…

Gateway网关的实现

API网关 网关路由必须支持负载均衡&#xff0c;服务列表是从注册中心拉取的客户端发出请求的URL指向的是网关&#xff0c;URL还必须要包含目标信息网关收到URL&#xff0c;通过一定的规则&#xff0c;要能识别出交给哪个实例去处理网关有能力对请求响应进行修改 引入依赖包 …

使用LangGPT提示词让大模型比较浮点数

使用LangGPT提示词让大模型比较浮点数 背景介绍环境准备创建虚拟环境安装一些必要的库安装其他依赖部署大模型启动图形交互服务设置提示词与测试 LangGPT结构化提示词 背景介绍 LLM在对比浮点数字时表现不佳&#xff0c;经验证&#xff0c;internlm2-chat-1.8b (internlm2-cha…

计算机视觉—3d点云数据基础

点云数据 3d点云数据由来 3d点云 3D Point Cloud是一种用于表示三维空间中对象或场景的数据结构。在最基础的形式中&#xff0c;它是一个包含多个三维坐标点&#xff08;X, Y, Z&#xff09;的集合。这些点是通过对实际物体或场景表面进行离散采样而获得的&#xff0c;因此&a…