【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
详细讲解:

1.首先设定上下左右边界;
2.其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码中就是重新定义上边界;
3.判断若重新定义后,上下边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案;
4.若上下边界不交错,则遍历还未结束,接着向下向左向上移动,操作过程与第一,二步同理;
5.不断循环以上步骤,直到某两条边界交错,跳出循环,返回答案。

代码实现:
class Solution {public List<Integer> spiralOrder(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;List<Integer> nums = new ArrayList<>();//定义出上下左右的边界int u = 0;int d = m - 1;int l = 0;int r = n - 1;while(true) {for (int i = l; i <=r; i++) {nums.add(matrix[u][i]);}if(++u > d){break;}for (int i = u; i <= d; i++) {nums.add(matrix[i][r]);}if (--r < l){break;}for (int i = r; i >= l; --i) {nums.add(matrix[d][i]);}if (--d < u) {break;}for (int i = d; i >= u; --i) {nums.add(matrix[i][l]);}if (++l > r) {break;}}return nums;}
}

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

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

相关文章

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历&#xff0c;总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案&#xff0c;形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等&#xff0c;虽然文中使用的编程语言…

外包干了3个月,技术明显进步。。。。。

在湖南的一个安静角落&#xff0c;我&#xff0c;一个普通的大专生&#xff0c;开始了我的软件测试之旅。四年的外包生涯&#xff0c;让我在舒适区里逐渐失去了锐气&#xff0c;技术停滞不前&#xff0c;仿佛被时间遗忘。然而&#xff0c;生活的转机总是在不经意间降临。 与女…

VMware安装Centos 7系统+设置共享文件夹+VMware Tools安装

文章目录 镜像下载地址下载页自己选择直接点击下边url下载 VMware环境1.新建虚拟机2.选择“自定义(高级)”&#xff0c;并点击【下一步】3.选择虚拟机硬件兼容性&#xff0c;并点击【下一步】4.选择“稍后安装操作系统”&#xff0c;并点击【下一步】5.选择操作系统版本&#x…

阿里云服务器地域怎么选?地域选择经验分享

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

如何将大华dav视频转mp4?一键无损清晰转换~

Digital Audio Video&#xff08;DAV&#xff09;文件格式源于数字监控领域&#xff0c;旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展&#xff0c;DAV格式逐渐成为监控设备记录视频的标准格式&#xff0c;广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…

掌握微服务性能监控:走向高效稳定的系统之路

掌握微服务性能监控&#xff1a;走向高效稳定的系统之路 一、微服务性能监控的挑战二、性能监控的目标与指标三、性能监控工具概览四、实践案例分析五、结语 大家好&#xff0c;这里是程序猿代码之路&#xff0c;在当今快速迭代和发布的软件开发周期中&#xff0c;微服务架构以…

付费代理IP与免费代理IP的区别

目录 一、稳定性与可用性 二、速度与性能 三、安全性与隐私保护 四、功能与服务 五、案例与代码示例 六、总结 在网络爬虫、数据分析、网络安全测试等场景中&#xff0c;代理IP的使用是非常普遍的。代理IP能够帮助用户隐藏真实IP地址&#xff0c;突破地域限制&#xff0c…

6个选品建议,改善你的亚马逊现状。

一、市场热点与需求调研 深入研究当前市场趋势&#xff0c;了解消费者需求的变化。使用亚马逊的销售数据、评价、问答等功能&#xff0c;以及第三方市场研究工具&#xff0c;比如店雷达&#xff0c;分析潜在热销产品的特点。注意季节性需求&#xff0c;提前布局相关选品&#…

【数据挖掘】练习2:数据管理1

课后作业2&#xff1a;数据管理1 一&#xff1a;上机实验1 # 读入数据 data("CO2") # 查看数据集CO2中的变量名称&#xff0c;并将变量Treatment的名称更改为Treat names(CO2) names(CO2)[names(CO2) "Treatment"] <- "Treat" names(CO2)…

login登录界面

展示情况 代码&#xff1a; <template><div class"wrapper"><div style"margin: 200px auto; background-color: #fff; width: 350px; height: 300px; padding: 20px; border-radius: 10px"> <div style"margin: 20px 0; text…

C语言实现一个两个数加减乘除的答题代码(含文件保存),用户增加,题目增加,题目测试,题目答题等等

目录 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 3、获取完整源码网址 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 &#xff08;1&#xff09;测试模块 每次…

网安渗透攻击作业(4)

Unload-labs-01 function checkFile() { var file document.getElementsByName(upload_file)[0].value; if (file null || file "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 v…

【Linux】对进程PCB的理解查看进程信息的方法

一、学习准备&#xff1a;对操作系统工作模式的理解 首先我们要清楚的是&#xff0c;操作系统是一个进行软硬件资源管理的软件。操作系统对下要管理好底层硬件。每一个硬件的生产产商都会给他们的产品提供对应的驱动程序&#xff0c;驱动程序是特定于某一硬件或系统设备的软件组…

angularjs 指令实现自定义滚动条

场景&#xff1a;横向商品栏&#xff0c;把原有的滚动条改成自定义的样式&#xff0c;并且给两边加上箭头可以调整&#xff0c;可以拖动商品和滚轮实现滚动条效果。 js appService.directive(customScrollbar, function() {return {restrict: A,transclude: true,scope: {ena…

Linux编程4.8 网络编程-建立连接

1、服务器端 #include <sys/types.h> #include <sys/socket.h>int listen(int sockfd, int backlog);返回&#xff1a;成功返回0&#xff0c;出错返回-1。参数&#xff1a;sockfd:套接字的文件描述符backlog:定义了sockfd的挂起连接队列可能增长的最大长度。…

关于udp能跨局域网传输的问题

UDP&#xff08;用户数据报协议&#xff09;以其独特的传输特性在多种应用场景中都有着极其重要的作用。然而&#xff0c;关于UDP是否能跨局域网&#xff08;LAN&#xff09;进行传输&#xff0c;以及这一传输过程中的优缺点&#xff0c;一直是网络技术领域讨论的热点。本文将详…

Unity中PICO中手柄按键返回值

文章目录 前言一、我们看一下每个按键返回值获取按键返回值的方法 二、我们实现一个左摇杆控制平滑移动的功能1、创建一个左摇杆控制移动的脚本2、传入XR Origin对象&#xff0c;并且定义一个公开变量控制移动速度3、获取到摇杆是否移动&#xff0c;以及移动的偏移量4、如果摇杆…

Modeling Influence Diffusion over Signed Social Networks

关键词——社会系统、影响力扩散、建模、签名社交网络、影响力最大化 Abstract 在离线或在线世界中&#xff0c;许多社交系统可以表示为签名社交网络&#xff0c;包括积极和消极关系。尽管由于独特极性特征的巨大应用价值&#xff0c;人们对签名社交网络进行了各种研究&#x…

【Docker篇】自定义Dockerfile的操作

文章目录 &#x1f354;镜像结构&#x1f6f8;什么是Dockerfile⭐基于Ubuntu镜像构建一个新镜像&#xff0c;运行一个java项目&#x1f50e;使用 java:8-alpine &#x1f354;镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 我们以MySQL为例&am…

QT网络编程之实现UDP广播发送和接收

推荐一个不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;内容全面&#xff0c;作为入门科普和学习提升都不错&#xff0c;分享一下给大家&#xff1a;前言https://www.captainbed.cn/ai 一.UDP通信 1.QT中实现UDP通信主要用到了以下类&#xff1a;QUdpSocket、QHost…