螺旋矩阵Java

news2025/1/20 6:03:33

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]

按照顺序,先填第一行,然后往下拐,然后左拐,然后右拐又回到了第一行,循环往复,直到填完整个矩阵

    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> ret = new LinkedList<>();
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return ret;
        }
        int rowMin = 0; 
        int colMin = 0;
        int rowMax = matrix.length-1;
        int colMax = matrix[0].length-1;
        while (rowMin <= rowMax && colMin <= colMax) {
            for (int i = colMin; i <= colMax; i++) {
                ret.add(matrix[rowMin][i]);
            }
            rowMin++;
            for (int i = rowMin; i <= rowMax; i++) {
                ret.add(matrix[i][colMax]);
            }
            colMax--;
            if (rowMin > rowMax || colMin > colMax) {
                break;
            }
            for (int i = colMax; i >= colMin; i--) {
                ret.add(matrix[rowMax][i]);
            }
            rowMax--;
            for (int i = rowMax; i >= rowMin; i--) {
                ret.add(matrix[i][colMin]);
            }
            colMin++;
        }
        return ret;
    }

59. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

class Solution {
    public int[][] generateMatrix(int n) {
        int count = 1;
        int[][] ret = new int[n][n];
        int rowMin = 0;
        int colMin = 0;
        int rowMax = n - 1;
        int colMax = n - 1;
        while (colMin <= colMax && rowMin <= rowMax) {
            for (int i = colMin; i <= colMax; i++) {
                ret[rowMin][i] = count;
                count++;
            }
            rowMin++;
            for (int i = rowMin; i <= rowMax; i++) {
                ret[i][colMax] = count;
                count++;
            }
            colMax--;
            // if (rowMin > rowMax || colMin > colMax) {
            //     break;
            // }
            for (int i = colMax; i >= colMin; i--) {
                ret[rowMax][i] = count;
                count++;
            }
            rowMax--;
            for (int i = rowMax; i >= rowMin; i--) {
                ret[i][colMin] = count;
                count++;
            }
            colMin++;
        }
        return ret;
    }
}

2326. 螺旋矩阵 IV

给你两个整数:m 和 n ,表示矩阵的维数。
另给你一个整数链表的头节点 head 。
请你生成一个大小为 m x n 的螺旋矩阵,矩阵包含链表中的所有整数。链表中的整数从矩阵 左上角 开始、顺时针 按 螺旋 顺序填充。如果还存在剩余的空格,则用 -1 填充。
返回生成的矩阵

class Solution {
    public int[][] spiralMatrix(int m, int n, ListNode head) {
        int[][] ret = new int[m][n];
        int rowMin = 0;
        int colMin = 0;
        int rowMax = m - 1;
        int colMax = n - 1;
        ListNode pre = head;
        while (colMin <= colMax && rowMin <= rowMax) {
            for (int i = colMin; i <= colMax; i++) {
                if (pre != null) {
                    ret[rowMin][i] = pre.val;
                    pre = pre.next;
                } else {
                    ret[rowMin][i] = -1;
                }
            }
            rowMin++;
            for (int i = rowMin; i <= rowMax; i++) {
               if (pre != null) {
                    ret[i][colMax] = pre.val;
                    pre = pre.next;
                } else {
                    ret[i][colMax] = -1;
                };
            }
            colMax--;
            if (rowMin > rowMax || colMin > colMax) {
                break;
            }
            for (int i = colMax; i >= colMin; i--) {
                if (pre != null) {
                    ret[rowMax][i] = pre.val;
                    pre = pre.next;
                } else {
                    ret[rowMax][i] = -1;
                }
            }
            rowMax--;
            for (int i = rowMax; i >= rowMin; i--) {
                if (pre != null) {
                    ret[i][colMin] = pre.val;
                    pre = pre.next;
                } else {
                    ret[i][colMin] = -1;
                }
            }
            colMin++;
        }
        return ret;
    }
}

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

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

相关文章

【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】

1、问题描述 Jenkins打包服务运行dockerfile里的FROM java:8报错manifest for java : 8 not fourd Caused by: com.spotify. docker.client.exceptions.DockerException: manifest for java:8 not found2、解决方法 在网上查找许多方法后得出这是由于Docker官方已经弃用java…

电脑每次开机杀毒软件报iusb3mon.exe病毒已清除,电脑中病毒iusbmon杀毒办法,工具杀毒

不知道什么时候开始&#xff0c;我电脑C盘的系统数据存储文件夹programdata 不知不觉就没了&#xff0c;找不到了 programdata文件夹为存储系统数据文件的&#xff0c;这个文件不见了&#xff0c;而且我打开了显示隐藏文件和文件夹还是没有显示 然后我重启电脑&#xff0c;杀毒…

Ansible-palybook学习

目录 一.playbook介绍二.playbook格式1.书写格式 一.playbook介绍 playbook 是 ansible 用于配置&#xff0c;部署&#xff0c;和管理被控节点的剧本。通过 playbook 的详细描述&#xff0c;执行其中的一系列 tasks &#xff0c;可以让远端主机达到预期的状态。playbook 就像 …

多项式乘法(FFT)

https://www.luogu.com.cn/problem/P3803 傅里叶变换(FFT)笔记存档FFT代码上的实现细节 主函数 把长度设为2的整数次幂块 初始进行翻转&#xff08;二进制翻转&#xff09; 对A&#xff0c;B先化为点值&#xff08;DFT&#xff09; 相乘 IDFT FFT函数 进行初始翻转&a…

openGauss学习笔记-55 openGauss 高级特性-全密态数据库

文章目录 openGauss学习笔记-55 openGauss 高级特性-全密态数据库55.1 连接全密态数据库55.2 创建用户密钥55.3 创建加密表55.4 向加密表插入数据并进行查询 openGauss学习笔记-55 openGauss 高级特性-全密态数据库 全密态数据库意在解决数据全生命周期的隐私保护问题&#xf…

Maven - 依赖三大原则

文章目录 概述最短路径优先原则POM 文件中声明顺序优先原则覆盖优先原则 MAVEN 依赖冲突常见报错Maven 依赖加载流程 概述 Maven 是一个流行的构建工具&#xff0c;用于管理和构建Java项目。它遵循一些核心原则&#xff0c;以确保项目的构建和依赖管理能够高效、一致地进行。以…

在CMD脚本中生成空心字

背景 程序启动时&#xff0c;需要通过串口向外打印信息&#xff0c;想在信息最前面打印一个log&#xff0c;如下图所示&#xff1a; win自带的CMD安装pyfiglet 使用pip安装pyfiglet&#xff0c;如下&#xff1a; pip install pyfiglet安装成功后如下图&#xff1a; 运行以…

(数字图像处理MATLAB+Python)第十一章图像描述与分析-第一节、二节:图像描述概述和特征点

文章目录 一&#xff1a;图像描述概述&#xff08;1&#xff09;图像描述&#xff08;2&#xff09;描述子 二&#xff1a;特征点&#xff08;1&#xff09;Moravec角点检测A&#xff1a;原理B&#xff1a;程序 &#xff08;2&#xff09;Harris角点检测A&#xff1a;原理B&…

YII项目在Docker中运行缓慢

缓慢问题分析 请求YII的api时间请求原生查询时间win10 上运行docker上的php api异常慢ubuntu 中拉代码git报错 请求YII的api时间 请求原生查询时间 win10 上运行docker上的php api异常慢 链接阿里数据的 入口直接返回的 网上有说是docker的dns解析慢&#xff1b; 也有说是…

方面级别情感分析之四元组预测

情感四元组预测现有方法 阅读本文之前我们默认你对情感分析有基本的认识。 如果没有请阅读文章(https://tech.tcl.com/post/646efb5b4ba0e7a6a2da6476) 情感分析四元组预测涉及四个情感元素: 方面术语a&#xff0c;意见术语(也叫观点术语)o&#xff0c; 方面类别ac&#xff0c…

使用python对光谱数据进行lorentz峰值拟合

1、lorentz峰值拟合 发光光谱是一种用于表征二维半导体材料光学性质的重要技术&#xff0c;它可以反映出材料中的载流子密度、缺陷态、激子束缚能等信息。 由于二维半导体材料的厚度极其薄&#xff0c;其发光信号往往很弱&#xff0c;且受到基底、环境和测量设备等因素的干扰…

访问学者如何办理延期回国

近年来&#xff0c;随着国际交流的不断深入&#xff0c;越来越多的学者选择走出国门&#xff0c;到异国他乡进行访问学习。然而&#xff0c;有时由于研究项目进展或个人原因&#xff0c;访问学者可能需要延期回国。那么&#xff0c;访问学者在延期回国时应该如何办理手续呢&…

[Go版]算法通关村第十五关黄金——继续研究超大规模数据场景的问题

目录 题目&#xff1a;对20GB文件进行排序解决思路&#xff1a;外部排序 两两合并 题目&#xff1a;超大文本中搜索两个单词的最短距离解决思路&#xff1a;双指针法复杂度&#xff1a;时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1) 题目&#xff1a;从10亿数字…

ChatGPT AIGC 一个指令总结Python所有知识点

在ChatGPT中,直接输入一个指令就可以生成Python的所有知识点大纲。 非常实用的ChatGPT功能。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.…

优秀产品经理的产品定位策略

产品定位是指在产品设计之初或在市场推广过程中&#xff0c;通过广告宣传等营销手段&#xff0c;使得产品在消费者心中确立具体形象的过程。这样有利于目标用户快速决策选择该产品。 如果没有明确的产品定位或产品定位模糊不清&#xff0c;目标用户对该产品印象不深刻&#xff…

干货丨软件测试行业迎来新时代,AI将成为主流技术?

随着科技日新月异的发展&#xff0c;人工智能正逐渐渗透到我们生活的各方各面&#xff0c;从智能语音助手到自动驾驶汽车、从智能家居到人脸识别技术&#xff0c;AI正以其卓越的智能和学习能力引领着新时代的发展方向。 在这个快速演进的时代中&#xff0c;软件测试领域也受到了…

STM32单片机示例:64位全局时间戳发生器

文章目录 目的基础说明测试代码总结示例链接 目的 STM32H743 / H750 系列的芯片有一个64位的全局时间戳发生器&#xff08; Global timestamp generator &#xff09;&#xff0c;这篇文章将对它的使用做个记录。 基础说明 全局时间戳发生器相关的内容可以参考官方参考手册&…

如何解决高并发中的I/O瓶颈?

我们都知道&#xff0c;在当前的大数据时代背景下&#xff0c;I/O的速度比内存要慢&#xff0c;尤其是性能问题与I/O相关的问题更加突出。 在许多应用场景中&#xff0c;I/O读写操作已经成为系统性能的一个重要瓶颈&#xff0c;这是不能忽视的。 什么是I/O&#xff1f; I/O作为…

基于RabbitMQ的模拟消息队列之四——内存管理

文章目录 一、设计数据结构二、管理集合1.交换机2.队列3.绑定4.消息5.队列上的消息6.待确认消息7.恢复数据 一、设计数据结构 针对交换机、队列、绑定、消息、待确认消息设计数据结构。 交换机集合 exchangeMap 数据结构&#xff1a;ConcurrentHashMap key:交换机name value:交…

视频剪辑高手揭秘:如何巧妙改变尺寸,打造完美画面

视频剪辑高手揭秘&#xff1a;如何巧妙改变尺寸&#xff0c;打造完美画面 在数字媒体时代&#xff0c;视频剪辑已经成为一项至关重要的技能。不仅在专业电影制作领域&#xff0c;也在个人创作和社交媒体传播中发挥着重要作用。本文将向你介绍一位视频剪辑高手&#xff0c;并揭…