LeetCode - LCR 146- 螺旋遍历二维数组

embedded/2024/11/15 3:52:38/

LCR 146题

题目描述:

给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。

螺旋遍历:从左上角开始,按照 向右向下向左向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。

image.png

**题解思路:**这道题和力扣54题一样题解见https://blog.csdn.net/Miss_croal/article/details/141180630?spm=1001.2014.3001.5502,唯一不一样的就是边界,这个会有 0 的情况,所以一定要把判断放到最前面!

class Solution {public int[] spiralArray(int[][] array) {// 样例中有一维空数组,一定要放到最前面来判断!!!否则会显示下标越界if(array.length == 0) return new int[0];int m = array.length;int n = array[0].length;int[] res = new int[m * n];int i = 0, j = 0, x = 0, y = 0, index = 0, offset = 1;int loop = 0;while (loop < Math.min(m, n) / 2) {// 向右for (j = y; j < n - offset; j++) {res[index++] = array[x][j];}// 向下for (i = x; i < m - offset; i++) {res[index++] = array[i][j];}// 向左for (; j > y; j--) {res[index++] = array[i][j];}// 向上for (; i > x; i--) {res[index++] = array[i][j];}// 更新x++;y++;offset++;loop++;}// 判断最后要添加的是中间行还是中间列if (Math.min(m, n) % 2 == 1) {if (m > n) {// 添加中间列for (int t = 0; t < (m - n + 1); t++) {res[index++] = array[x++][y];}} else {// 添加中间行for (int t = 0; t < (n - m + 1); t++) {res[index++] = array[x][y++];}}}return res;}
}

http://www.ppmy.cn/embedded/98612.html

相关文章

小琳AI课堂 - AIGC在不同行业的应用潜力与未来发展深度解析

小琳AI课堂 - AIGC在不同行业的应用潜力与未来发展深度解析 大家好&#xff0c;这里是小琳AI课堂&#xff01;今天我们将深入探讨AIGC&#xff08;AI Generated Content&#xff0c;人工智能生成内容&#xff09;在不同行业中的应用潜力&#xff0c;以及其未来发展前景&#x…

k8s 安装nacos集群

需求 使用k8s部署nacos集群&#xff0c;nacos的数据主要保存在mysql中&#xff0c;因此nacos运行时不需要考虑持久化问题。 这里使用2.3.2版本 导入mysql数据 github地址&#xff1a;https://github.com/alibaba/nacos/releases 找到2.3.2版本&#xff0c;下载压缩包&#xff0…

JDK、JRE、JVM关系

JDK:Java Development Kit&#xff0c;是java开发工具包 ,开发java必备工具&#xff0c;JDKJRE开发工具集&#xff08;javac等&#xff09; JRE:Java Runtime Environment&#xff0c;是java运行时的环境&#xff0c;包含了java虚拟机jvm java基础类库&#xff0c;是使用java…

dataX从orcal数据库抽取数据插入gbase 8a数据库 与 OceanBase数据库

一&#xff1a;dataX从orcal数据库抽取数据插入gbase 8a数据库配置&#xff1a; {"job": {"setting": {"speed": {"channel": 4},"errorLimit": {"percentage": 0}},"content": [{"reader":…

Java异常捕获与处理:深入理解与实践

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Java学习Day31:HTML 第一章:观音禅院

1.结构介绍 1.标签的分类 <单词> &#xff1a;元素标签 <元素 单词>&#xff1a;首先<>中至少有两个单词&#xff0c;那第一个肯定是元素标签&#xff0c;元素标签后跟的都是属性标签 2.文本元素 段落元素 段落元素 换行标签 br 水平线标签 标签会在页面…

图像数据处理13

三、空域滤波 3.1滤波器的基本概念 什么是滤波&#xff1f; 简单来说就是从干扰信号中提取出有用的信号 3.1.1空域滤波&#xff08;Spatial Domain Filtering&#xff09; 空域滤波适用于简单的滤波任务&#xff0c;直接对图像的像素空间进行操作。它通过对图像中的每个像…

linux28学习 进程结束演示

signal.c #include <stdio.h> #include <signal.h> #include<unistd.h> void handler(int sig) { printf("catch a sig : %d\n", sig); } int main() { while(1){sleep(1);printf("进程号&#xff1a;%d\n",getpid());}return 0; }…