59.Spiral Matrix II
来源:互联网 发布:维普数据库论文查询 编辑:程序博客网 时间:2024/04/19 02:19
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]
solution1
class Solution {public: vector<vector<int> > generateMatrix(int n) { if(n == 0) return vector<vector<int>>(); vector<vector<int>> ret(n, vector<int>(n, 0)); int rowBegin = 0; int rowEnd = n - 1; int colBegin = 0; int colEnd = n - 1; int num = 1; while (rowBegin <= rowEnd && colBegin <= colEnd) { if (num <= n^2) { //向右遍历添加 for (int j = colBegin; j <= colEnd; j++) { ret[rowBegin][j] = num; num++; } } rowBegin++; if (num <= n^2) { //向下遍历添加 for (int i = rowBegin; i <= rowEnd; i++) { ret[i][colEnd] = num; num++; } } colEnd--; if (num <= n^2) { //向左遍历添加 for (int j = colEnd; j >= colBegin; j--) { ret[rowEnd][j] = num; num++; } } rowEnd--; if (num <= n^2) { //向上遍历添加 for (int i = rowEnd; i >= rowBegin; i--) { ret[i][colBegin] = num; num++; } } colBegin++; } return ret; }};
solution2
与顺时针打印矩阵算是相反的问题
class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> ret;ret.resize(n);for (int i = 0;i<ret.size();++i){ret[i].resize(n,0);}int start = 0;int num = 1;while (n>2*start){constructMatrixOnce(ret,n,start++,num);}return ret; } void constructMatrixOnce(vector<vector<int>> &ret ,int n,int start,int& num){int endX = n-start-1;int endY = n-start-1;for(int i = start;i<=endX;++i) { ret[start][i] = num++; }if(start<endY) { for(int i = start+1;i<=endY;++i) { ret[i][endX] = num++; } }if(start<endY && start<endX) { for(int i = endX-1;i>=start;--i) { ret[endY][i] = num++;} } if(start<endX && endY-start>1) { for(int i = endY-1;i>=start+1;--i) { ret[i][start] = num++;} }}};
0 0
- 59.Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- 59. Spiral Matrix II
- IM服务器架构实现畅想
- BZOJ3884 上帝与集合的正确用法
- POJ 3210 : Coins
- 6.25 被虐记 6 期末测试 变相求和
- 机器学习中的范数规则化之(二)核范数与规则项参数选择
- 59.Spiral Matrix II
- HTTP状态码的含义
- int类型取值范围
- RecyclerView使用介绍
- android activity切换效果实现
- NSString什么时候用copy,什么时候用strong
- thinkpad 外放和耳机 声音分离设置
- OCP-1Z0-051-2015-20题
- 团队文档构建