当前位置:网站首页>力扣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;
}
}
边栏推荐
猜你喜欢
百利药业IPO过会:扣非后年亏1.5亿 奥博资本是股东
In-depth understanding of JVM-memory structure
RNA核糖核酸修饰荧光染料|HiLyte Fluor 488/555/594/647/680/750标记RNA核糖核酸
Network protocol-TCP, UDP difference and TCP three-way handshake, four wave
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
ESP8266-Arduino编程实例-WS2812驱动
开源教育论坛| ChinaOSC
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
622 设计循环队列——Leetcode天天刷【循环队列,数组模拟,双指针】(2022.8.2)
怎么将自己新文章自动推送给自己的粉丝(巨简单,学不会来打我)
随机推荐
alicloud3搭建wordpress
建模该从哪一步开始?给你分析,给零基础的你一些学习建议
机器学习中专业术语的个人理解与总结(纯小白)
友宏医疗与Actxa签署Pre-M Diabetes TM 战略合作协议
不要再用if-else
收藏-即时通讯(IM)开源项目OpenIM-功能手册
阿洛的反思
Redis 内存满了怎么办?这样置才正确!
codeforces:C. Maximum Subrectangle【前缀和 + 贪心 + 最小子数组和】
【leetcode】剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口,双指针)
Use ControlTemplate or Style from resource file in WPF .cs and find the control
LeetCode 899. 有序队列
JMeter笔记5 |Badboy使用和录制
危化企业双重预防机制数字化建设进入全面实施阶段
Internet Download Manager简介及下载安装包,IDM序列号注册问题解决方法
LeetCode 952. Calculate Maximum Component Size by Common Factor
Jingdong cloud released a new generation of distributed database StarDB 5.0
基础软件与开发语言开源论坛| ChinaOSC
Go语言为任意类型添加方法
In-depth understanding of JVM-memory structure