leetcode螺旋矩阵总结
创始人
2024-05-05 19:24:14
0

螺旋矩阵题目:

leetcode54,59,885,2326

leetcode54

在这里插入图片描述
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

class Solution {
public:vector spiralOrder(vector>& matrix) {int n=matrix.size();//n行int m=matrix[0].size();//m列vectorvec;int t=0;int b=n-1;int l=0;int r=m-1;int count=n*m;while(count>=1){for(int i=l;i<=r && count>=1;i++){vec.push_back(matrix[t][i]);count--;}t++;for(int i=t;i<=b &&count>=1;i++){vec.push_back(matrix[i][r]);count--;}r--;for(int i=r;i>=l && count>=1;i--){vec.push_back(matrix[b][i]);count--;}b--;for(int i=b;i>=t && count>=1;i--){vec.push_back(matrix[i][l]);count--;}l++;    }return vec;}
};

leetcode59

在这里插入图片描述
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
给你一个正整数 n ,生成一个包含 1 到 n*n所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

class Solution {
public:vector> generateMatrix(int n) {int t = 0;      // top上边界int b = n-1;    // bottom下边界int l = 0;      // left左边界int r = n-1;    // right右边界vector>vec(n,vector(n));int m=1;while(m<=n*n){// for(l;l<=r;l++;i++){vec[t][l]=i;} //这样写l会随着自增改变// t++;// for(t;t<=b;t++;i++){vec[t][l]=i;}//i与左右上下边界的移动无关,只是一个标记变量for(int i=l;i<=r;i++,m++){vec[t][i]=m;}t++;for(int i=t;i<=b;i++,m++){vec[i][r]=m;}r--;for(int i=r;i>=l;i--,m++){vec[b][i]=m;}b--;for(int i=b;i>=t;i--,m++){vec[i][l]=m;}l++;}return vec;}
};

leetcode 885. 螺旋矩阵 III

输入:rows = 1, cols = 4, rStart = 0, cStart = 0
输出:[[0,0],[0,1],[0,2],[0,3]]
在这里插入图片描述
输入:rows = 5, cols = 6, rStart = 1, cStart = 4
输出:[[1,4],[1,5],[2,5],[2,4],[2,3],[1,3],[0,3],[0,4],[0,5],[3,5],[3,4],[3,3],[3,2],[2,2],[1,2],[0,2],[4,5],[4,4],[4,3],[4,2],[4,1],[3,1],[2,1],[1,1],[0,1],[4,0],[3,0],[2,0],[1,0],[0,0]]

class Solution {
public:vector> spiralMatrixIII(int rows, int cols, int rStart, int cStart) {vector>vec;int count=rows*cols;int step=1;while(count>=1){int right=cStart+step;//右边界 往右for(cStart;cStartif(rStart>=0 && rStart=0 && cStartvec.push_back({rStart,cStart});count--;}}int bottom=rStart+step;///往下for(rStart;rStartif(rStart>=0 && rStart=0 && cStartvec.push_back({rStart,cStart});count--;}}step++;//增加步长int left=cStart-step;//往左for(cStart;cStart>left;cStart--){if(rStart>=0 && rStart=0 && cStartvec.push_back({rStart,cStart});count--;}}int top=rStart-step;///往上for(rStart;rStart>top;rStart--){if(rStart>=0 && rStart=0 && cStartvec.push_back({rStart,cStart});count--;}} step++;//最后还要step++增加步长}return vec;}
};

leetcode2326. 螺旋矩阵 IV

在这里插入图片描述
输入:m = 3, n = 5, head = [3,0,2,6,8,1,7,9,4,2,5,5,0]
输出:[[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]]
解释:上图展示了链表中的整数在矩阵中是如何排布的。
注意,矩阵中剩下的空格用 -1 填充。
给你两个整数:m 和 n ,表示矩阵的维数。
另给你一个整数链表的头节点 head 。
请你生成一个大小为 m x n 的螺旋矩阵,矩阵包含链表中的所有整数。链表中的整数从矩阵 左上角 开始、顺时针 按 螺旋 顺序填充。如果还存在剩余的空格,则用 -1 填充。返回生成的矩阵。

struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}};
class Solution {
public:vector> spiralMatrix(int m, int n, ListNode* head) {ListNode* cur=head;int count=m*n;int t=0;int b=m-1;int l=0;int r=n-1;bool flag=false;vector>vec(m,vector(n,-1));while(count>=1){for(int i=l;i<=r;i++){if(cur==nullptr){flag=true;break;}vec[t][i]=cur->val;cur=cur->next;count--;       }if(flag){break;}t++;for(int i=t;i<=b;i++){if(cur==nullptr){flag=true;break;}vec[i][r]=cur->val;cur=cur->next;count--;}if(flag){break;}r--;for(int i=r;i>=l;i--){if(cur==nullptr){flag=true;break;}vec[b][i]=cur->val;cur=cur->next;count--;}if(flag){break;}b--;for(int i=b;i>=t;i--){if(cur==nullptr){flag=true;break;}vec[i][l]=cur->val;cur=cur->next;count--;}if(flag){break;}l++;}return vec;}
};

相关内容

热门资讯

时空猎人安卓苹果系统,探索无尽... 你知道吗?最近在手机游戏圈里,有一款叫做《时空猎人》的游戏可是火得一塌糊涂呢!不管是安卓用户还是苹果...
安卓9.0系统的电视,新一代电... 亲爱的读者们,你是否也像我一样,对科技新玩意儿充满好奇?今天,我要和你聊聊一个让人眼前一亮的话题——...
小pc安装安卓系统,轻松安装安... 你有没有想过,你的小PC也能变身成为安卓系统的超级玩家呢?没错,就是那个平时默默无闻的小家伙,现在也...
高通备份安卓系统,全方位数据安... 你知道吗?在这个科技飞速发展的时代,手机备份可是个不得不提的话题。尤其是对于安卓用户来说,选择一个靠...
谷歌安卓系统有多少,从诞生到全... 你有没有想过,那个无处不在的谷歌安卓系统,究竟在全球有多少用户呢?它就像一个神秘的数字,每天都在悄悄...
fc黄金传说安卓系统,畅享复古... 你有没有听说最近安卓系统上的一款超酷的游戏——《FC黄金传说》?这款游戏可是让不少玩家都沉迷其中,今...
变小的我安卓系统,安卓系统演变... 你有没有发现,最近你的手机好像变轻了?没错,说的就是你,那个陪伴你多年的安卓系统。它悄无声息地进行了...
vivo安卓系统小彩蛋,体验科... 你知道吗?在vivo的安卓系统中,竟然隐藏着一些超有趣的小彩蛋!这些小彩蛋就像是在手机里埋下的宝藏,...
安卓系统如何强制重启,安卓系统... 手机突然卡壳了,是不是又该给它来个“大保健”了?没错,今天就来聊聊安卓系统如何强制重启。别小看这个看...
全民飞行团安卓系统,体验指尖上... 你知道吗?最近在手机游戏圈里,有个叫做“全民飞行团”的新星正在闪耀!这款游戏不仅吸引了无数玩家的目光...
安卓鸿蒙系统壁纸软件,壁纸软件... 亲爱的手机控们,你是否厌倦了单调的壁纸?想要给你的安卓手机换上充满科技感的鸿蒙系统风格壁纸?那就跟我...
安卓系统ram重新分区,提升系... 你有没有发现,你的安卓手机最近有点儿卡呢?别急,别急,今天就来给你揭秘如何给安卓系统的RAM来个重新...
迷你退出安卓系统了吗,转型新篇... 最近有没有发现你的手机上那个可爱的迷你退出图标突然不见了?别急,让我来给你揭秘迷你退出安卓系统了吗的...
华为优先使用安卓系统,打造自主... 你知道吗?最近科技圈里有个大动作,那就是华为宣布优先使用安卓系统。这可不是一个简单的决定,它背后可是...
安卓系统隐藏了设置,隐藏设置功... 你知道吗?安卓系统这个大宝藏里,竟然隐藏着一些不为人知的设置!是不是听起来就有点小激动呢?别急,今天...
反渣恋爱系统安卓,收获真爱 你有没有听说过那个神奇的“反渣恋爱系统安卓”呢?最近,这款应用在网络上可是火得一塌糊涂,不少单身狗都...
安卓出厂系统能升级,探索无限可... 你知道吗?现在这个时代,手机更新换代的速度简直就像坐上了火箭!而说到手机,安卓系统可是占据了半壁江山...
老安卓刷机系统,从入门到精通 你有没有想过,你的老安卓手机其实还有大大的潜力呢?没错,就是那个陪伴你多年的老安卓,它可不是只能用来...
安卓粉ios系统app,兼容性... 你有没有发现,身边的朋友圈里,安卓粉和iOS系统粉总是争论不休?今天,咱们就来聊聊这个话题,看看安卓...
安卓系统语言下载,探索安卓系统... 你有没有想过,你的安卓手机是不是该换换口味了?没错,就是语言!想象如果你能轻松切换到自己喜欢的语言,...