题目
方法一:二维数组缩圈填数字
文章来源:https://www.toymoban.com/news/detail-707794.html
定义四个边界条件,每转一圈,把数值填进去,然后缩小一圈,直到不满足条件位置
结束循环条件可以是:
两种结束条件都可以,但是一定要注意每次处理一条边界的范围 不能重复赋值文章来源地址https://www.toymoban.com/news/detail-707794.html
while(right >= left && bom >= top){//结束转圈条件(边界不满足)
//while(count <= n * n){//结束转圈条件(填写数值到最大了 无需填了)
class Solution {
//方法一 : 定义四个边界条件,每转一圈,就缩小一圈,直到不满足条件位置
public static int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int left = 0;
int right = n-1;
int top = 0;
int bom = n-1;
int count = 1;//计数器
while(right >= left && bom >= top){//结束转圈条件
//while(count <= n * n){//结束转圈条件 两种结束条件都可以
//上左闭右闭
for(int i = left;i<=right ; i++){
res[top][i] = count;
count++;
}
//右 上开下闭
for(int i = top+1;i<=bom ; i++){
res[i][right] = count;
count++;
}
//下 左闭右开
for(int i = right-1;i>=left ; i--){
res[bom][i] = count;
count++;
}
//左 下开上开
for(int i = bom-1;i>top ; i--){
res[i][left] = count;
count++;
}
//缩小一圈 修改四个边界
left++;
right--;
top++;
bom--;
}
return res;
}
}
方法二:
到了这里,关于【LeetCode-中等题】59. 螺旋矩阵 II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!