当前位置:网站首页>力扣59-螺旋矩阵 II——边界判断
力扣59-螺旋矩阵 II——边界判断
2022-08-03 20:03:00 【张怼怼√】
题目描述
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
解题思路
- 我们可以新建一个n*n的空矩阵,按照题目要求依次往进去添加数据;
- 分别定义矩阵的上下左右边界为 t , b , l , r ;
- 新建num初始化为1 每次添加后加1;
- 以3*3矩阵为例:首先需要在第一行从左到右填充1,2,3,因此此时的循环条件应该是:
for(int i = l; i <= r; i++) arr[t][i] = num++; t++;- t++的目的是将上边界(蓝色的线)向下移动,以缩小矩阵范围;
- 接下来需要添加4,5,循环条件为:
for(int i = t; i <= b; i++) arr[i][r] = num++; r--;- 绿色的右边界线向左移动,接下来填充6,7,循环条件是:
for(int i = r; i >= l; i--) arr[b][i] = num++; b--;- 下边界线(红色的线)向上移动,接下来填充元素8,循环条件是:
for(int i = b; i >= t; i--) arr[i][l] = num++; l++;- 左边界线(黄色的线)向右移动,至此一轮循环结束,最外层的一层元素已经填充完毕;
- 如果没有循环完将继续重复上面四个步骤,不断地调整四个边界线;
- 判断是否循环完成的条件是 num <= target,num 没有超过 target 说明元素还没有填充完毕。

输入输出示例


代码
class Solution {
public int[][] generateMatrix(int n) {
int num = 1, target = n*n;
int l = 0, r = n-1, t = 0, b = n-1;
int[][] arr = new int[n][n];
while(num <= target){
for(int i = l; i <= r; i++) arr[t][i] = num++;
t++;
for(int i = t; i <= b; i++) arr[i][r] = num++;
r--;
for(int i = r; i >= l; i--) arr[b][i] = num++;
b--;
for(int i = b; i >= t; i--) arr[i][l] = num++;
l++;
}
return arr;
}
}边栏推荐
- net-snmp私有mib动态加载到snmpd
- Use ControlTemplate or Style from resource file in WPF .cs and find the control
- NNLM、RNNLM等语言模型 实现 下一单词预测(next-word prediction)
- LeetCode 622. 设计循环队列
- Hinton2022年RobotBrains访谈记录
- 2022.8.2
- 开源教育论坛| ChinaOSC
- Jingdong cloud released a new generation of distributed database StarDB 5.0
- ESP8266-Arduino编程实例-MCP4725数模转换器驱动
- 入门3D建模基础教程详细分解
猜你喜欢

MySQL Basics

1161 最大层内元素和——Leetcode天天刷【BFS】(2022.7.31)

高位套牢机构,用友网络的信任危机是如何产生的?

【STM32】标准库-自定义BootLoader

pytorch框架实现老照片修复功能详细演示(GPU版)
[email protected] 610/[email protected] 594/Alexa 56"/>染料修饰核酸RNA|[email protected] 610/[email protected] 594/Alexa 56

转运RNA(tRNA)甲基化修饰7-甲基胞嘧啶(m7C)|tRNA-m7G

RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405

codeforces:C. Maximum Subrectangle【前缀和 + 贪心 + 最小子数组和】

机器学习中专业术语的个人理解与总结(纯小白)
随机推荐
codeforces:C. Maximum Subrectangle【前缀和 + 贪心 + 最小子数组和】
tRNA甲基化偶联3-甲基胞嘧啶(m3C)|tRNA-m3C (3-methylcy- tidine)
友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
(十六)51单片机——红外遥控
高并发,你真的理解透彻了吗?
C51 存储类型与存储模式
Detailed steps for tensorflow-gpu2.4.1 installation and configuration
盘点在线帮助中心对企业能够起到的作用
钱江摩托某型号产品ECU货不对版 消费者知情权应如何保障?
【飞控开发高级教程3】疯壳·开源编队无人机-定高、定点、悬停
LeetCode 622. Designing Circular Queues
模板字符串概述
群辉查看硬盘存储占用的方式
pytorch框架实现老照片修复功能详细演示(GPU版)
高性能计算软件与开源生态| ChinaOSC
Statistical machine learning 】 【 linear regression model
【飞控开发高级教程4】疯壳·开源编队无人机-360 度翻滚
MySQL Basics
dpkg强制安装软件
Detailed AST abstract syntax tree