Leecode螺旋矩阵 II59

 59.螺旋矩阵II

题目建议:  本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。 

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

文章讲解:代码随想录

视频讲解:一入循环深似海 | LeetCode:59.螺旋矩阵II_哔哩哔哩_bilibili

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> matrix(n,vector<int>(n));//这种matrix的写法不熟悉
        int top=0;
        int bottom=n-1;
        int right=n-1;
        int left=0;
        int num=1;//num从1到n^2
        while(left<=right && top<=bottom){//这里的循环调节我先乘了num<=num*num了,其实可以直接携程上下左右界
            for(int i=left;i<=right;i++){
                matrix[top][i]=num++;
            }
            for(int i=top+1;i<=bottom;i++){
                matrix[i][right]=num++;
            }
            if(right>left && bottom>top){
                for(int i=right-1;i>left;i--){
                    matrix[bottom][i]=num++;
                }
                for(int i=bottom;i>top;i--){
                    matrix[i][left]=num++;
                }
            }
            left++;
            right--;
            top++;
            bottom--;
        }
        return matrix;
    }
};

2023/08/10 19:27 这一题乍一看还是没有思路的;

C老师给的思路:

1、初始化 n*n 的矩阵;

2、定义四个边界:right、bottom、left、top。它们分别代码我们可以填充的矩阵的四个边界;

3、使用一个变量 num,从1开始到n^2;

4、循环中,从左往右填充顶行、从上往下填充右列、从右往左填充底行、从下往上填充左列;

5、每填充完一个方向,更新相应的边界;

6、继续填充直到位置填满;

边界控制这一块还是不够熟悉 2023/08/10 20:22

vcetor<vector<int>> matrix(n,vetor<int>(n));//这种matrix的写法不熟悉

2023/08/10 20:29

卡哥实现的是四个边界分的很清楚的边界限定,另外,循环调节卡哥使用的是轮次;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿道学长啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值