Leetcode-54. 螺旋矩阵

给你一个 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

主要得设置边界,把握边界的范围。可以设置left,right表示左边界和有边界(列边界);top和bottom为上边界和下边界(行边界)。然后保证左边不超过右边;上边不超过下边。每撞一次边界,对应的范围要发生改变

代码如下:

 

class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res = new ArrayList<>();int left = 0;int right = matrix[0].length-1;int top = 0;int bottom = matrix.length-1;while(left<=right&&top<=bottom){for(int i = left ; i <= right && top <= bottom ; i++){res.add(matrix[top][i]);}top++;for(int i =top ; i <= bottom && left <= right ; i++){res.add(matrix[i][right]);}right--;for(int i = right ; i >= left && top <= bottom ; i--){res.add(matrix[bottom][i]);}bottom--;for(int i = bottom ; i >= top && left <= right ; i--){res.add(matrix[i][left]);}left++;}return res;}
}

一个大佬的思路:走过的路置为0,然后拐弯的时候判断一下是不是已经走过了,如果走过了就计算一下新的方向。他的代码如下:

r, i, j, di, dj = [], 0, 0, 0, 1
if matrix != []:for _ in range(len(matrix) * len(matrix[0])):r.append(matrix[i][j])matrix[i][j] = 0if matrix[(i + di) % len(matrix)][(j + dj) % len(matrix[0])] == 0:di, dj = dj, -dii += dij += dj
return r

 不得不说,真的很妙!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个比SDXL更快的模型——Stable Cascade【必坑指北】

2024年的春节假期&#xff0c;AIGC界又发生了重大革命性事件。 OpenAI 发布了首款文生视频模型——Sora。简单来说就是&#xff0c;AI视频要变天了&#xff01;之前的SVD&#xff0c;还是Google的Lumiere最多就几十帧&#xff0c;大约十秒左右&#xff0c;但是Sora却是SOTA级别…

MySQL数据库基础(二):MySQL数据库介绍

文章目录 MySQL数据库介绍 一、MySQL介绍 二、MySQL的特点 三、MySQL版本 四、MySQL数据库下载与安装 1、下载 2、安装 五、添加环境变量&#xff08;Windows&#xff09; 六、检测环境变量是否配置成功 MySQL数据库介绍 一、MySQL介绍 MySQL是一个关系型数据库管理…

5种风格非常经典的免费wordpress主题

免费wordpress主题下载 高端大气上档次的wordpress主题&#xff0c;也可以是免费的&#xff0c;可以在线免费下载。 https://www.wpniu.com/themes/288.html wordpress免费主题 高端大气的wordpress免费主题&#xff0c;LOGO在顶部左侧&#xff0c;导航菜单在顶部右侧。 ht…

C语言—for循环(2)

24⬆(2)并不是进阶的意思&#xff0c;而是这是我新的一天写的发布1,计算n的阶乘 ? n! 1*2*3.....*n n值通过键盘输入 /*1,计算n的阶乘 ? ?n! 1*2*3.....*n ?n值通过键盘输入*/#include <stdio.h>int main(void) {int n;printf("请输入一个整数来计算其阶乘…

每日一题——LeetCode1436.旅行终点站

方法一 个人方法 两次遍历set 终点站不通往其他任何城市&#xff0c;那么终点站只会出现在[cityA,cityB]的第二位&#xff0c;利用set第一次遍历保存所有站点&#xff0c;第二次遍历去除所有在第一位出现的站点&#xff0c;剩下的站点就是不通往任何站点的终点站&#xff1a; …

倒模UV树脂胶制作舞台监听耳返入耳式耳机壳可行吗?

使用倒模UV树脂胶制作舞台监听耳返入耳式耳机壳是一种可行的方法&#xff0c;能够为专业或业余的音乐制作人、DJ和舞台表演者提供定制的、高品质的监听耳返体验。 以下是一些关键步骤和注意事项&#xff1a; 耳模制作&#xff1a;首先&#xff0c;为使用者制作一个精确的耳模…

中科星图——LANDSAT_8/02/T1/RAW的Landsat8_C2_RAW类数据集

数据名称&#xff1a; Landsat8_C2_RAW 数据来源&#xff1a; USGS 时空范围&#xff1a; 2020年1月-2023年3月 空间范围&#xff1a; 全国 数据简介&#xff1a; Landsat8_C2_RAW数据集是经过缩放和校准的辐射亮度产品&#xff0c;按照数据质量划分为T1和T2。数据质量…

使用汇编程序恢复C库、动态链接器

文章目录 写在前面背景原理动态链接器C库 汇编代码示例删除C库删除动态链接器 写在前面 上层语言的好处就是方便&#xff0c;但无法触摸规则的底层&#xff0c;所有的规则都是别人制定的 学习底层原理不仅可以让我们对高级语言的规则有更深的理解&#xff0c;而且可以从自己的…

HiveSQL——连续增长问题

注&#xff1a;参考文章&#xff1a; SQL连续增长问题--HQL面试题35_sql判断一个列是否连续增长-CSDN博客文章浏览阅读2.6k次&#xff0c;点赞6次&#xff0c;收藏30次。目录0 需求分析1 数据准备3 小结0 需求分析假设我们有一张订单表shop_order shop_id,order_id,order_time…

springboot集成elk实现日志采集可视化

一、安装ELK 安装ELK组件请参考我这篇博客&#xff1a;windows下安装ELK(踩坑记录)_windows上安装elk教程-CSDN博客 这里不再重复赘述。 二、编写logstash配置 ELK组件均安装好并成功启动&#xff0c;进入到logstash组件下的config文件夹&#xff0c;创建logstash.conf配置…

性能分析5部曲:瓶颈分析与问题定位,如何快速解决瓶颈?

一、引言 很多做性能测试的同学都问过我这样一个问题&#xff1a;鱼哥(Carl_奕然)&#xff0c;你说性能测试的重点是什么? 我的回答很简单&#xff1a;瓶颈分析与问题定位。 在性能项目的整个周期&#xff0c;不管是脚本设计&#xff0c;脚本编写还是脚本执行&#xff0c;都…

在cloudcompare中,已知三维坐标可视化坐标点

主要思路是&#xff1a;已知坐标&#xff0c;通过在坐标生成圆球来可视化坐标点。主要操作步骤如下 1.在cloudcompare中找到“创建基础模型” 2.创建球体 输入坐标和球体半径&#xff0c;x&#xff0c;y&#xff0c;z中输入已知坐标&#xff0c;这里以&#xff08;0,0,0&…

小游戏和GUI编程(6) | 基于 SFML 的井字棋

小游戏和GUI编程(6) | 基于 SFML 的井字棋 0. 简介 使用 SFML 实现井字棋(tic-tac-toe), 规划如下: 了解规则&#xff0c; 使用命令行实现(已经实现了)使用 SFML&#xff0c;提供极简的交互(预计 1 小时)制作 SVG 图像&#xff0c; 美化界面(预计 1 小时) 1. 基于命令行的实…

MySQL安装问题:由于找不到MSVCP120.dll,无法继续执行代码.重新安装程序可能会解决此问题。

出现的问题&#xff1a; 解决&#xff1a;由于没有安装微软常用运行库合集64位导致的问题 下载vcredist_x64 https://www.microsoft.com/zh-CN/download/details.aspx?id40784 下载完成后&#xff0c;点击运行解决问题。

《VulnHub》GoldenEye:1

title: 《VulnHub》GoldenEye&#xff1a;1 date: 2024-02-16 14:53:49 updated: 2024-02-16 15:08:49 categories: WriteUp&#xff1a;Cyber-Range excerpt: 主机发现、目标信息扫描、源码 js 文件泄露敏感信息、hydra 爆破邮件服务&#xff08;pop3&#xff09;、邮件泄露敏…

撑住!再好的命,也有坎坷的时候

再好的命&#xff0c;其实都有为难的时候&#xff0c;都有经历磨难的时候。要想真正强大起来&#xff0c;都要度过一段没人帮忙&#xff0c;所有事情都是自己一个人撑&#xff0c;所有情绪和思想&#xff0c;都只有自己知道的日子。但只要咬牙撑过去&#xff0c;一切就都不一样…

【JAVA-Day86】守护线程

守护线程 守护线程摘要引言1. 了解守护线程&#xff1a;它是什么&#xff1f;&#x1f47b;特点和用途示例代码 2. 为何我们需要守护线程&#xff1f;&#x1f47b;辅助性任务处理不阻止程序的正常运行重要的清理工作示例代码&#x1f4da; 3. 如何创建和管理守护线程&#xff…

使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南

导读 本指南为开发者提供了使用 Taro 框架开发鸿蒙原生应用的快速入门方法。Taro&#xff0c;作为一个多端统一开发框架&#xff0c;让开发者能够使用一套代码同时适配多个平台&#xff0c;包括鸿蒙系统。文章将详细介绍如何配置开发环境&#xff0c;以及如何利用 Taro 的特性…

真假难辨 - Sora(OpenAI)/世界模拟器的技术报告

目录 引言技术报告汉译版英文原版 引言 Sora是OpenAI在2024年2月15日发布的世界模拟器&#xff0c;功能是通过文本可以生成一分钟的高保真视频。由于较高的视频质量&#xff0c;引起了巨大关注。下面是三个示例&#xff0c;在示例之后给出了其技术报告&#xff1a; tokyo-wal…

树形dp 笔记

树的最长路径 给定一棵树&#xff0c;树中包含 n 个结点&#xff08;编号1~n&#xff09;和 n−1 条无向边&#xff0c;每条边都有一个权值。 现在请你找到树中的一条最长路径。 换句话说&#xff0c;要找到一条路径&#xff0c;使得使得路径两端的点的距离最远。 注意&…