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^2while(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
卡哥实现的是四个边界分的很清楚的边界限定,另外,循环调节卡哥使用的是轮次;