Leecode螺旋矩阵 II59

 59.螺旋矩阵II

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

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

文章讲解:代码随想录

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

class Solution {
public:
    vector> generateMatrix(int n) {
        vector> matrix(n,vector(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> matrix(n,vetor(n));//这种matrix的写法不熟悉

2023/08/10 20:29

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

你可能感兴趣的:(矩阵,线性代数)