【每日一题】54. 螺旋矩阵

news2024/11/27 17:51:00

54. 螺旋矩阵 - 力扣(LeetCode)

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

class Solution {
    int x=0,y=0;
    public List<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> arr = new ArrayList();
        int row = matrix.length;
        int col = matrix[0].length;
        System.out.print(row);
        int total = row * col - 1;
        int count = 0;
        arr.add(matrix[0][0]);
        for(int i = 0 ;count < total; ++i) {
            y+=1;
            while(y<(col-i))   { arr.add(matrix[x][y]);y++;count++;}
            if(count>=total) break;
            y-=1;
            x+=1;
            while(x<(row-i))  {  arr.add(matrix[x][y]);x++;count++;}
            if(count>=total) break;
            x-=1;
            y-=1;
            while(y>=i)     {    arr.add(matrix[x][y]);y--;count++;}
            if(count>=total) break;
            y+=1;
            x-=1;
            while(x>i)      {   arr.add(matrix[x][y]);x--;count++;}
            if(count>=total) break;
            x+=1;
        }
        return arr;
    }
}

        这是一道中等题,但是实际难度来算的话,博主觉得是达不到中等题的程度的,所以大家刷题的时候,不要被题目标记的难度所吓倒。、

         这道题其实也是模拟就可以解决。主要的问题在于边界的控制。

        按照这个例子来说,可以使用x,y来表示行和列,用arrlist来存储最后的答案。之后就是循环的问题了,循环无非就是对x,y进行操作,并且将操作完的元素加入arraylist就可以了。循环就需要涉及到用来循环控制的数,循环的控制条件就是arraylist是否已经将所有的数加入了,如果是,那么就无需继续循环了。所以可以用一个count来计数,一旦count和元素组中的元素个数相同,就是已经放完就可以退出循环了。

        之后观察一下矩阵,发现是一圈一圈循环进去的,那么第一圈实际就是0行,竖列就是0列而最底下的第一圈就是row-1行,竖列就是col-1列。那我们在实际循环过程中可以使用小于来控制,那么实际写入的边界控制就是row行和col列。而row=row-0,col=col-0.发现了吗?如果没有,那么再走一行,横行是第1行,竖列是第1列,底下横行(边界控制的数)就是row-1,列就是col-1.所以实际上就可以用i,row-i,col-i来进行循环,就可以了,因为每列首个要去掉,所以可以将第一列第一个先放入,之后每次循环完就对x或y先进行一个+-1的操作,从而使数不会重复。

        这样一道中等题就解决了。

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

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

相关文章

电脑内存不足怎么办?分享4个释放空间小妙招!

“我的电脑好像也没有保存什么很大的文件&#xff0c;为什么总会显示电脑内存不足呀&#xff1f;现在电脑非常的卡&#xff0c;有什么好用的方法可以快速清理电脑内存吗&#xff1f;希望大家给我出出主意&#xff01;” 我们在使用电脑时&#xff0c;可能电脑悄悄地保存了很多的…

线下沙龙 | 从营销扩张到高效回款,游戏公司如何通过全链路运营实现高质量出海!

游戏出海&#xff0c;是近些年来中国产业的风暴出口&#xff0c;在2020至2023年期间保持着绝对的领航地位。公开数据显示&#xff0c;过去4年里&#xff0c;游戏在各类App出海份额中总体保持稳定&#xff0c;高达 64.9%。 但毕竟海外是陌生的市场&#xff0c;我们见过太多折戟沉…

Windows——安装 Microsoft 便签

打开 Microsoft Store。 搜索 Microsoft 便签&#xff0c;点击安装。

How to clean up Graylog Default index set log

一、前言: Graylog 满了,没有自动清理 挤爆硬盘空间,手动清理流程: 二、问题描述: Elasticsearch nodes disk usage above high watermark (triggered a few seconds ago)mree are ast search modes i the use wtm a mos mo re disk ther dsk s saoe me e waemak f ths…

ant vue3 自定义table一行两列

效果图 table代码 <a-tablesize"small":columns"columns":row-key"(record, index) > index 1":data-source"tableInfo.data":pagination"false"change"handleTableChange"resizeColumn"handleResiz…

Hashtable和HashMap、ConcurrentHashMap 之间的区别

Hashtable和HashMap的区别 HashMap和Hashtable都是哈希表数据结构&#xff0c;但是Hashtable是线程安全的&#xff0c;HashMap是线程不安全的 Hashtable实现线程安全就是简单的把关键方法都加上了synchronized关键字 直接在方法上添加synchronized相当于针对this对象&#xff0…

Linux cat 的作用

Linux中的cat命令用于连接文件并打印到标准输出设备&#xff08;通常是终端&#xff09;。 它的主要作用有以下几点&#xff1a; 查看文件内容&#xff1a;cat命令可用于查看文本文件的内容&#xff0c;将文件的内容从第一行到最后一行打印到终端。 合并文件&#xff1a;cat命…

你们真的感觉Python那么好用吗?

最近一些工作需要用Python来做&#xff0c;我把我遇到的不开心说出来让大家开心开心。PYTHON是一门很伟大的语言&#xff0c;而且有很多有用的框架都是用PYTHON写的&#xff01;这只是我个人的感受不一定对&#xff0c;别太认真。就当一个故事听&#xff01; 先说我一些库装了以…

ChatGPT追祖寻宗:GPT-1论文要点解读

论文地址&#xff1a;《Improving Language Understanding by Generative Pre-Training》 最近一直忙着打比赛&#xff0c;好久没更文了。这两天突然想再回顾一下GPT-1和GPT-2的论文&#xff0c; 于是花时间又整理了一下&#xff0c;也作为一个记录~话不多说&#xff0c;让我们…

C. Assembly via Minimums

题目&#xff1a;样例&#xff1a; 输入 5 3 1 3 1 2 10 4 7 5 3 5 3 3 5 2 2 2 2 2 2 2 2 2 2 5 3 0 0 -2 0 -2 0 0 -2 -2输出 1 3 3 10 10 7 5 3 12 2 2 2 2 2 0 -2 0 3 5 思路&#xff1a; 数学思维题&#xff0c;构造算法&#xff0c;这里我们从样例中可以知道&#xff0c;…

当我出现在股友面前,他们笑了,这是来自最佳策略app平台的自信

我的人生就仿佛被提前安排好了一样&#xff1a;三年的自考&#xff0c;三年的打工&#xff0c;五年的炒股等等&#xff0c;这么丰富的履历&#xff0c;小说男主都很少有&#xff0c;可这一切都发生在我的身上。 不知道怎么回事&#xff0c;高考我竟然睡着了&#xff0c;我就这样…

【excel密码】如何保护部分excel单元格?

Excel文件可以设置保护工作表&#xff0c;那么可以只保护工作表中的部分单元格&#xff0c;其他地方可以正常编辑吗&#xff1f;当然是可以的&#xff0c;今天我们学习&#xff0c;如何设置保护部分单元格。 首先&#xff0c;我们先将整张工作表选中&#xff08;Ctrl A&#…

【RapidAI】P0 项目总览

RapidAI 项目总览 ** 内容介绍 ** Author&#xff1a; SWHL、omahs Github&#xff1a; https://github.com/RapidAI/Knowledge-QA-LLM/ CSDN Author&#xff1a; 脚踏实地的大梦想家 UI Demo&#xff1a; ** 读者须知 ** 本系列博文&#xff0c;主要内容为将 RapidAI 项目逐…

2023欧亚合作发展大会暨国际公共采购大会在京举行

2023年9月2日至6日&#xff0c;以“合作、协同、共赢、共享”为主题的“2023欧亚合作发展大会暨国际公共采购大会等系列会议”在北京炎黄书院隆重举行&#xff0c;共有500多位中外贵宾参加了本次盛会。 本次大会指导单位是中国联合国采购促进会、北京市中医药局&#xff0c;由中…

20套面向对象程序设计选题Java Swing(含教程) (二) 持续更新 建议收藏

20套面向对象程序设计选题Java Swing(含教程) (一) 7. 员工工资管理系统 视频教程&#xff1a; 【课程设计】员工工资管理系统-Java Swing-你的课程我设计 功能描述&#xff1a; 系统员工有"工号"、 “姓名”、“性别”、“岗位”、 "入职年份 "、"…

删除文件PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。

删除文件PermissionError: [WinError 32] 另一个程序正在使用此文件&#xff0c;进程无法访问。 问题描述解决方案另外一个问题解决方案 问题描述 是想写一个脚本删除长宽比不对的图片 # coding: utf-8 from PIL import Image, ImageDraw, ImageFont import os import shuti…

Canvas学习01

基础 1、基本概念 Canvas是一个标准的HTML5元素Canvas主要聚焦于2D图形&#xff0c;提供了非常多的JavaScript绘图API&#xff08;比如&#xff1a;绘制路径、矩形、圆、文本和图像等方法&#xff09;也可以使用元素对象的 WebGL API 来绘制 2D 和 3D 图形 2、Canvas 优点&a…

AWB-Tuning(1)

一、白平衡的概念 AWB – Auto White Balance 白平衡就是&#xff1a;不管在任何光源下&#xff0c;都能将拍摄的白色物体的图像还原为白色 人眼在早晨、中午、晚上 不同色温下都能准确看到白色。 CMOS 要获得这种能力&#xff0c;必须对每种光源做相应的色彩校准&#xff0c…

asm disk被加入到另外一个磁盘组故障恢复---惜分飞

有朋友在aix环境对其中一个rac的asm磁盘组进行扩容 之后另外一套rac的磁盘组直接dismount Wed Aug 23 12:44:02 2023 NOTE: SMON starting instance recovery for group DATA domain 2 (mounted) NOTE: F1X0 found on disk 0 au 2 fcn 0.128808679 NOTE: SMON skipping disk …

RocketMQ 快速搭建与控制台搭建

一、下载资料及环境准备 这里 下载路径 可以下载对应的版本&#xff0c;本文以 4.9.5 为例&#xff1a;下载这里的Binary 为Linux 安装文件&#xff0c;Source 也下载&#xff0c;方便后续使用。 将下载后的包进行解压&#xff1a; 由于RockerMQ 的建议运行环境较大&#xff…