【力扣】54. 螺旋矩阵

题解:

这里当然就不能只是通过双循环来解题了,因为会烦死。这道题的关键点在于左右边界的确定,参考官方解题法在这里写出我的解题思路。

首先看图,螺旋且顺时针,所以我们可以先遍历从左至右的,上边界加一向下移,然后从上至下,右边界-1向左移,这样就能保证不再重复遍历。待到从右至左的时候我们需要判断此时左边界是否小于右边界,上边界是否小于下边界,如果满足条件的话那就证明里面还有元素需要处理,那这个时候就进行从右至左,从下至上的操作。

代码如下:

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        //1.定义数组用以存放满足条件的元素
        List<Integer> order=new ArrayList<Integer>();
        //2.不满足条件的情况直接返回即可
        if(matrix==null||matrix.length==0||matrix[0].length==0) return order;
        //3.获取到上下左右边界的值
        int row=matrix.length,col=matrix[0].length;
        int left=0,right=col-1,top=0,bottom=row-1;
        while(left<=right&&top<=bottom){
            //从左至右
            for(int i=left;i<=right;i++){
                order.add(matrix[top][i]);
            }
            //从上至下
            for(int i=top+1;i<=bottom;i++){
                order.add(matrix[i][right]);
            }
            if(left<right&&top<bottom){
                //从右至左
                for(int i=right-1;i>left;i--){
                    order.add(matrix[bottom][i]);
                }
                //从下至上
                for(int i=bottom;i>top;i--){
                    order.add(matrix[i][left]);
                }
            }
        left++;
        right--;;
        top++;
        bottom--;
        }
        return order;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科技论文中的Assumption、Remark、Property、Lemma、Theorem、Proof含义

一、背景 学控制、数学、自动化专业的学生在阅读论文时&#xff0c;经常会看到Assumption、Remark、Property、Lemma、Theorem、Proof等单词&#xff0c;对于初学者可能不太清楚他们之间的区别&#xff0c;因此这里做一下详细的说明。 以机器人领域的论文为例。 论文题目&…

IO / day03 作业

1. 使用文件IO完成对图像的读写操作 代码 #include<myhead.h>int main(int argc, const char *argv[]) {int fd-1;if((fd open("./bird.bmp", O_RDWR)) -1){perror("fopen error");return -1;}//读取该图片的大小&#xff0c;需要将光标向后偏移…

Game-On论文阅读

异质性是多模态研究中最重要的关注点 文章目录 Abstract1. Introduction2. Related Work2.1 多模态假新闻检测 **以往的研究方法**2.2 GNNs在多模态研究中的地位3. 方法论3.1 视觉和文本特征编码器3.2 共享多模态空间和多模态图构建3.3 图注意层3.4 假新闻检测器4. 实验与结果4…

Linux的IO模型——阻塞IO

当要读数据recvfrom时&#xff0c;其实就需要两个阶段&#xff0c;一是将硬盘数据读到内核缓冲区&#xff0c;二是将内核缓冲区数据拷贝到用户缓冲区。而阻塞IO就是在两个阶段中用户进程都必须阻塞等待。

2024年天津财经大学珠江学院专升本专业课《管理学原理》考试大纲

天津财经大学珠江学院2024年高职升本科专业课考试《管理学原理》考试大纲 一、本大纲系天津财经大学珠江学院2024年高职升本科《管理学原理》课程考试大纲。所列考试范围出自徐碧琳主编的教材《管理学原理&#xff08;第二版&#xff09;》&#xff0c;机械工业出版社&#xff…

一篇吃透大厂面试题,2024找工作一帆风顺。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

企业持续绿色创新水平数据集(1999-2022年)

参考何郁冰&#xff08;2017&#xff09;的做法&#xff0c;计算持续创新水平。将绿色专利申请的前后期对比来反映创新的持续程度。创新持续性企业在第t&#xff0d;1与t年间的专利申请量之和较第t&#xff0d;2与t&#xff0d;1年间的专利申请量之和的环比增长率&#xff0c;再…

【广州华锐互动】VR沉浸式体验铝厂安全事故让伤害教育更加深刻

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐渗透到各个领域&#xff0c;为我们的生活带来了前所未有的便捷和体验。在安全生产领域&#xff0c;VR技术的应用也日益受到重视。 VR公司广州华锐互动就开发了多款VR安全事故体验系统&#xff0c…

python 堆与栈

【一】堆与栈 【 1 】简介 栈&#xff08;stack&#xff09;&#xff0c;有些地方称为堆栈&#xff0c;是一种容器&#xff0c;可存入数据元素、访问元素、删除元素&#xff0c;它的特点在于只能允许在容器的一端&#xff08;称为栈顶端指标&#xff0c;英语&#xff1a;top&a…

基于混沌算法的图像加密解密系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着信息技术的迅猛发展&#xff0c;图像的传输和存储已经成为现代社会中不可或缺的一部分。然而&#xff0c;随着互联网的普及和信息的快速传播&am…

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer&#xff0c; 是juc 下一个核心的抽象类&#xff0c;用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…

单机无锁线程安全队列-Disruptor

Disruptor 1、基本介绍 说到队列&#xff0c;除了常见的mq中间件&#xff0c;java中也自带线程安全的BlockingQueue&#xff0c;但是BlockingQueue通过在入队和出队时加锁的方式避免并发操作&#xff0c;性能上会大打折扣。 而Disruptor是一个线程安全、低延迟、吞吐量高的队…

波奇学C++:类型转换和IO流

隐式类型转换 int i0; double pi; 强制类型转换 int* pnullptr; int a(int)p; 单参数构造函数支持隐式类型转换 class A { public:A(string a):_a(a){} private:string _a; }; A a("xxxx"); //"xxx" const char* 隐式转换为string 多参数也可以通过{…

深入理解强化学习——马尔可夫决策过程:占用度量-[基础知识]

分类目录&#xff1a;《深入理解强化学习》总目录 文章《深入理解强化学习——马尔可夫决策过程&#xff1a;贝尔曼期望方程-[基础知识]》中提到&#xff0c;不同策略的价值函数是不一样的。这是因为对于同一个马尔可夫决策过程&#xff0c;不同策略会访问到的状态的概率分布是…

园区规划技术要点

&#xff08;一&#xff09;技术点介绍 1.WLAN&#xff1a;无线局域网WLAN&#xff08;Wireless Local Area Network&#xff09;是一种无线计算机网络&#xff0c;使用无线信道代替有线传输介质连接两个或多个设备形成一个局域网LAN&#xff08;Local Area Network&#xff09…

【亲测有效,超详细】收到微信小程序限期完成微信认证通知怎么处理?微信小程序年审认证都需要哪些资料?

背景&#xff1a;近期部分微信小程序管理员最近收到了年审认证通知如下图 微信官方通知 微信小程序认证流程 第一步&#xff1a;登录微信公众平台 网址&#xff1a;微信公众平台 第二步&#xff1a;登录进入后会看到年审通知弹窗&#xff0c;点击去年审 第二步&#xff1a;登…

java中Random随机数使用和生成随机数的多个示例

在 Java 中&#xff0c;我们可以使用 java.util.Random 类生成伪随机数。伪随机数的特性是&#xff0c;虽然它们看起来是随机的&#xff0c;但实际上它们是由一个固定的算法生成的。只要我们提供相同的种子&#xff0c;这个算法就会生成相同的数字序列。 首先&#xff0c;我们…

HarmonyOS开发基础(一)

HarmonyOS开发基础&#xff08;一&#xff09; // &#xff1a;装饰器&#xff1a;用来装饰类结构、方法、变量 Entry // Entry&#xff1a;标记当前组件为入口组件 Component // Component&#xff1a;标记为自定义组件 // struct&#xff1a;自定义组件&#xff0c;可复用的…

winform使用串口通信读取压力传感装置(CFM)的数据

一、简介 目的&#xff1a;获取CFM的 “hi” 报文&#xff0c;解析出如下数据并绘制波形图。 实现&#xff1a;使用c#打开CFM串口&#xff0c;发送 02 00 02 4C 49 0D 请求到串口&#xff0c;CFM就会不断返回不同类型的报文&#xff0c;我解析的是 “hi” 报文&#xff08;至…

2477. 到达首都的最少油耗 : 逐步讲解最低油耗求解思路

题目描述 这是 LeetCode 上的 「2477. 到达首都的最少油耗」 &#xff0c;难度为 「中等」。 Tag : 「DFS」 给你一棵 n 个节点的树&#xff08;一个无向、连通、无环图&#xff09;&#xff0c;每个节点表示一个城市&#xff0c;编号从 0 到 n - 1&#xff0c;且恰好有 n - 1 …