LeetCode_59. 螺旋矩阵 II
原创
©著作权归作者所有:来自51CTO博客作者晴天码字的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:本题思路同螺旋矩阵相同,只需要在遍历这个矩阵的过程中不断增加的值(初始化为1)即可
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n,vector<int>(n));//创建二维数组
int up=0;
int down=n-1;
int left=0;
int right=n-1;
int num=1;
while(true){
for(int i=left;i<=right;i++){
res[up][i]=num++;
}
if(++up>down)
break;
for(int i=up;i<=down;i++){
res[i][right]=num++;
}
if(--right<left)
break;
for(int i=right;i>=left;i--){
res[down][i]=num++;
}
if(--down<up)
break;
for(int i=down;i>=up;--i){
res[i][left]=num++;
}
if(++left>right)
break;
}
return res;
}
};