java数据结构与算法刷题-----LeetCode59. 螺旋矩阵 II

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路

在这里插入图片描述

  1. 初始,top行执向第一行,bottom行指向最后一行。left列指向第一列,right列指向最后一列
  2. 首先填充top行,arr[top][j], (其中left <= j <= right)。此时第一行填充完成,top下移 => top++
  3. 然后填充right列,arr[j][right], (其中top <= j <= bottom)。此时最后一列填充完成,right左移 => tright–
  4. 然后填充bottom行,arr[bottom][j], (其中right >= j >= left)。此时最后一行填充完成,bottom上移 => bottom–
  5. 然后填充left列,arr[j][left], (其中bottom >= j >= top)。此时第一列填充完成,left右移 => left++
  6. 此时完成一圈螺旋,整体进入下一层螺旋,重复上面2,3,4,5操作
代码:时间复杂度O( n 2 n^2 n2).空间复杂度O(1)

在这里插入图片描述

class Solution {public int[][] generateMatrix(int n) {int arr[][] = new int[n][n];int left = 0,right = n-1;//左右边界,left表示当前顺时针圈的最左边一列,right表示最右边int top = 0, bottom = n-1;//上下边界,top表示当前顺时针圈的最上面一行,bottom表示最下面for(int i = 1;i<=n*n;){for(int j = left; j<= right; j++) arr[top][j] = i++;//top行从左到右填满top++;//上面将top行填充成功,那么top需要下移一行,准备下一次的填充for(int j = top; j <= bottom; j++) arr[j][right] = i++;//right列从上到下填满right--;//上面将right列填充成功,right左移for(int j = right; j >= left; j--) arr[bottom][j] = i++;//bottom行从右向左填满bottom--;//上面将bottom行填充成功,bottom上移for(int j = bottom;j>= top;   j--) arr[j][left] = i++;//left列从下到上填满left++;//上面将left列填充成功,left列右移}return arr;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud可视化智慧工地大数据云平台源码(人、机、料、法、环五大维度)

智慧工地平台是依托物联网、互联网、AI、可视化建立的大数据管理平台&#xff0c;是一种全新的管理模式&#xff0c;能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三…

OJ常用函数/机试常用STL模板

目录 机试涉及到的算法一、字符串二、vector二、map三、set四、queue五、并查集五、cmath六、读入数据6.1 示例16.2 示例26.3 示例36.4 示例46.5 示例56.6 示例66.7 示例76.8 示例86.9 示例96.10 示例106.11 示例11 七、输入输出八、排序九、数学相关十、大数的表示十一、IDE 机…

Java 应用部署包优化经验分享

背景 最近接手了一个 2018 年的老项目&#xff0c;因为太久远了&#xff0c;功能上的代码不敢乱动&#xff0c;虽然是老项目&#xff0c;但最近一年也在持续加功能&#xff0c;功能不稳定&#xff0c;于是我就进入了救火式改 Bug 的状态。 功能不能妄动&#xff0c;但是这个项…

SwiftUI 框架有哪些主要优势

SwiftUI是苹果公司在2019年推出的一种用于构建用户界面的框架&#xff0c;它使用Swift语言编写&#xff0c;并且与iOS、iPadOS、macOS、watchOS和tvOS等平台兼容。下面简单的看下有哪些主要的优势。 声明式的界面描述 使用声明式编程风格&#xff0c;通过简洁的代码描述用户界…

【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

Qt Creator 下载地址&#xff08;含历史版本&#xff09;&#xff1a;https://download.qt.io/official_releases/qtcreator/ 症状 Qt Creator 目前最新版为12.0.1&#xff0c;安装后打开.qml文件发现设计工具图标为禁用状态。 原因及解决方案 根据官网材料&#xff08;Qt C…

Vue3前端开发,watch侦听器的深度监听和精确监听

Vue3前端开发,watch侦听器的深度监听和精确监听&#xff01;今天和大家分享的内容是&#xff0c;关于watch的深度侦听和精确监听。 首先看一下&#xff0c;第一个案例&#xff0c;练习的是&#xff0c;深度监听的效果。默认是浅的侦听&#xff0c;是不会触发回调函数的。 <…

DNS寻址过程

用一张图详细的描述DNS寻址的过程&#xff0c;是高级前端进阶的网络篇&#xff1a; 主要是第三步要记仔细就行啦&#xff0c;每一步都要详细的记录下来&#xff0c;总结的脉络如下&#xff1a; 本地DNS缓存本地DNS服务器根域名服务器 顶级域名服务器再次顶级域名服务器权威域名…

2024华数杯国际赛A题五小问完整思路+数据+py代码+高质量半成品论文

A题日本排核废水 2024华数杯国际赛A题五小问完整思路数据py代码高质量半成品论文 ## 问题二&#xff1a;三次排放后的放射性废水扩散路径 #### 2.1 基本假设&#xff1a; - 海洋是均匀的介质。 - 废水在排放点瞬时释放&#xff0c;并在海水中以某种速率扩散。 - 考虑海洋环…

Cmake(1)——Cmake的基本介绍和原理、Cmake的安装、如何使用Cmake构建项目

Cmake的基本介绍和原理、Cmake的安装、如何使用Cmake构建项目 插播&#xff01;插播&#xff01;插播&#xff01;亲爱的朋友们&#xff0c;我们的Cmake课程上线啦&#xff01;感兴趣的小伙伴可以去下面的链接学习哦~ https://edu.csdn.net/course/detail/39261 1、Cmake的基…

FPGA高端项目:Xilinx Artix7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案本方案在Xilinx Kintex7 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应用 3、设计思路框架设计框图视频源选择o…

将TI的电量计Linux驱动从4.4内核移植到5.10

背景 最近公司某产品用到了TI的电量计芯片BQ40Z50&#xff0c;我负责为其开发Linux驱动&#xff0c;搜了下&#xff0c;github上有TI为其写好的开源驱动&#xff0c;太好了。 看了下代码&#xff0c;比较简单&#xff0c;连Makefile都没写&#xff0c;不过这也挺好&#xff0…

数据库结构文档生成方法二(EZDML)

EZDML 下载链接&#xff1a;EZDML - 下载 我们常用的是数据建模有PowerDesigner,EZDML也是一款数据建模工具&#xff0c;而且功能很多&#xff0c;除了生成sql&#xff0c;还可以生成前端后端代码等等。 我们直接下载最新版后点击安装&#xff0c;打开后会默认打开示例&#…