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;}
};

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...