LeetCode 59. 螺旋矩阵 II && LeetCode 54. 螺旋矩阵
发布日期:2021-07-01 03:13:57
浏览次数:2
分类:技术文章
本文共 3144 字,大约阅读时间需要 10 分钟。
文章目录
1. 题目信息
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. LeetCode 59 解题
类似题目:
- 创建变量top、bottom表示上下行的区间,left、right表示列的区间
class Solution { public: vector> generateMatrix(int n) { vector > v(n, vector (n,0)); if(n == 0) return { }; int i, num = 0, total = n*n, top = 0, bottom = n-1, left = 0, right = n-1; while(num < total) { for(i = left; i <= right; ++i) v[top][i] = ++num; ++top; for(i = top; i <= bottom; ++i) v[i][right] = ++num; --right; for(i = right; i >= left; --i) v[bottom][i] = ++num; --bottom; for(i = bottom; i >= top; --i) v[i][left] = ++num; ++left; } return v; }};
3. LeetCode 54. 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
class Solution { public: vector spiralOrder(vector>& matrix) { if(matrix.empty()) return { }; vector ans; int m = matrix.size(), n = matrix[0].size(); int i, num = 0, total = m*n, top = 0, bottom = m-1, left = 0, right = n-1; while(num < total) { for(i = left; i <= right; ++i) ans.push_back(matrix[top][i]),num++; if(num == total) break; ++top; for(i = top; i <= bottom; ++i) ans.push_back(matrix[i][right]),num++; if(num == total) break; --right; for(i = right; i >= left; --i) ans.push_back(matrix[bottom][i]),num++; if(num == total) break; --bottom; for(i = bottom; i >= top; --i) ans.push_back(matrix[i][left]),num++; if(num == total) break; ++left; } return ans; }};
4.《剑指Offer》面试题29
class Solution { //2020.2.22public: vector spiralOrder(vector>& matrix) { if(matrix.size()==0 || matrix[0].size()==0) return { }; int i = 0, k = 0, count = matrix.size()*matrix[0].size(); int left = 0, right = matrix[0].size()-1, up = 0, bottom = matrix.size()-1; vector ans(count); while(count) { i = left; while(count && i <= right) { ans[k++] = matrix[up][i++]; count--; } up++, i = up; while(count && i <= bottom) { ans[k++] = matrix[i++][right]; count--; } right--; i = right; while(count && i >= left) { ans[k++] = matrix[bottom][i--]; count--; } bottom--; i = bottom; while(count && i >= up) { ans[k++] = matrix[i--][left]; count--; } left++; } return ans; }};
转载地址:https://michael.blog.csdn.net/article/details/100395555 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月28日 05时50分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
架构图(拓扑图)画图工具分析整理(静态,动态,可交互图.层级tu)
2019-05-03
test 博客园功能 和 搜索 seo 能力
2019-05-03
待学习
2019-05-03
山东科技大学2015-2016学年第一学期程序设计基础期末考试第一场 题解
2019-05-03
Python教程-----引用模块
2019-05-03
山东科技大学2020年4月9日题解
2019-05-03
蓝桥杯题解(二)
2019-05-03
蓝桥杯题解(三)
2019-05-03
数学建模需要的Matlab知识速成,两小时Matlab速成,Matlab小白教程
2019-05-03
逆向工程核心原理笔记(一)——Hello World-2
2019-05-03
逆向工程核心原理笔记(三)——IA-32寄存器
2019-05-03
Ngrok内网穿透教程(国内地址)
2019-05-03
SpringBoot利用AOP防止请求重复提交
2019-05-03
Linux下安装Mysql5..7(Centos7)--亲测
2019-05-03
Linux下安装Nginx(Centos7)
2019-05-03
Linux下安装JDK(Centos7)
2019-05-03
SQL优化--大数据量模糊查询缓慢
2019-05-03
Linux安装Zookeeper(Centos7)
2019-05-03
ACM进阶计划(来自于南阳理工学院)
2019-05-03