当前位置: 首页 > news >正文

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

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.lryc.cn/news/426902.html

相关文章:

  • 如何获取Bing站长工具API密钥
  • NC 调整数组顺序使奇数位于偶数前面(一)
  • Unity异步把图片数据从显存下载到内存(GPU->CPU)
  • 【MySQL】C/C++连接MySQL客户端,MySQL函数接口认知,图形化界面进行连接
  • Wireshark分析工具
  • linux网络配置脚本
  • IT管理:我与IT的故事4
  • 短链接系统设计方案
  • Cisco交换机SSH使用RSA公钥免密登录(IOS与Nexus,服务器以RHEL8为例)
  • QT判断操作系统类型和CPU架构
  • input[type=checkbox]勾选框自定义样式
  • 鼠害监测系统:科技守护农业安全
  • Ubuntu20.04如何安装配置JDK
  • Python3网络爬虫开发实战(9)代理的使用 (需补充代理池的构建)
  • 人际关系中的价值交换原理,在人类社会的复杂网络中,人际关系犹如一根根交织的丝线,将我们彼此紧密相连
  • 西安电子科技大学萌新智慧指南(校区篇)
  • JavaScript基础(33)_鼠标滚轮滚动事件、键盘事件
  • 怎样做网站推广
  • Unity引擎加密方案解析
  • 遇到的几个iOS问题
  • 掌握ChatGPT写作艺术:从入门到精通的四个层次
  • 虚幻UE5安装报错误代码:SU-PQR5
  • 谷歌开源Gemma-2 百亿参数大模型,性能超越Llama-3模型,免费使用
  • 人工智能与机器学习原理精解【12】
  • openEuler系统安装Visual Studio Code
  • Qt 系统相关 - 事件
  • Ubuntu最小化命令行系统 安装GUI 远程桌面
  • Web前端:CSS篇(二)背景,文本,链接
  • ubuntu 24.04 软件源配置,替换为国内源
  • 【Java 并发编程】(三) 从CPU缓存开始聊 volatile 底层原理