[LintCode]381.螺旋矩阵 II
2017-08-18 16:05
411 查看
给你一个数
样例
n =
矩阵为
这题的解题思路和第54题(Spiral Matrix 螺旋矩阵 )是相似的,这两题可以结合一起做的。
思路:一次循环如下:把数组的第一行从左到后赋值递增的数(1,2,…),然后再把数组最后一列从上到下赋值递增的数,然后再把数组的最后一行,从右到左赋值递增的数,最后把数组的第一列从下到上赋值递增的数,这是一次循环。
由于给定矩形是个正方形,我们计算环数时用n / 2来计算,若n为奇数时,此时最中间的那个点没有被算在环数里,所以最后需要单独赋值,注意下标转换问题。
class Solution {
public:
/**
* @param n an integer
* @return a square matrix
*/
vector<vector<int>> generateMatrix(int n) {
vector< vector<int> > matrix(n, vector<int>(n));//n×n的二维数组
int val = 1;
// 第i圈
for(int i=0; i<n/2; i++) { //圈数为n/2
// 从左至右
for(int j=i; j<n-i-1;j++) {
matrix[i][j] = val++;
}
// 从上至下
for(int j=i; j<n-i-1;j++) {
matrix[j][n-i-1] = val++;
}
// 从右至左
for(int j=i; j<n-i-1;j++) {
matrix[n-i-1][n-j-1] = val++;
}
// 从下至上
for(int j=i; j<n-i-1;j++) {
matrix[n-j-1][i] = val++;
}
}
if (n%2 == 1) matrix[n/2][n/2] = val;
return matrix;
}
};
n生成一个包含
1-n^2的螺旋形矩阵
样例
n =
3
矩阵为
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
这题的解题思路和第54题(Spiral Matrix 螺旋矩阵 )是相似的,这两题可以结合一起做的。
思路:一次循环如下:把数组的第一行从左到后赋值递增的数(1,2,…),然后再把数组最后一列从上到下赋值递增的数,然后再把数组的最后一行,从右到左赋值递增的数,最后把数组的第一列从下到上赋值递增的数,这是一次循环。
由于给定矩形是个正方形,我们计算环数时用n / 2来计算,若n为奇数时,此时最中间的那个点没有被算在环数里,所以最后需要单独赋值,注意下标转换问题。
class Solution {
public:
/**
* @param n an integer
* @return a square matrix
*/
vector<vector<int>> generateMatrix(int n) {
vector< vector<int> > matrix(n, vector<int>(n));//n×n的二维数组
int val = 1;
// 第i圈
for(int i=0; i<n/2; i++) { //圈数为n/2
// 从左至右
for(int j=i; j<n-i-1;j++) {
matrix[i][j] = val++;
}
// 从上至下
for(int j=i; j<n-i-1;j++) {
matrix[j][n-i-1] = val++;
}
// 从右至左
for(int j=i; j<n-i-1;j++) {
matrix[n-i-1][n-j-1] = val++;
}
// 从下至上
for(int j=i; j<n-i-1;j++) {
matrix[n-j-1][i] = val++;
}
}
if (n%2 == 1) matrix[n/2][n/2] = val;
return matrix;
}
};
相关文章推荐
- 螺旋矩阵 II -LintCode
- LintCode-381.螺旋矩阵 II
- Lintcode 螺旋矩阵 II
- 【LintCode】搜索二维矩阵 II
- LeetCode------54. Spiral Matrix(螺旋二维矩阵)-----59. Spiral Matrix II(n的螺旋矩阵)
- [Lintcode] Search a 2D Matrix II搜索二维矩阵 II
- 【lintcode】树形数据结构之Maxtree, Tree iterator, remove bst node, 优先队列之动态中位数Median, 矩阵dfs之word search II,最大连
- lintcode-螺旋矩阵 II
- lintcode,搜索二维矩阵 II
- [LeetCode] 59. Spiral Matrix II 螺旋矩阵 II
- LintCode-38.搜索二维矩阵 II
- 374螺旋矩阵.381螺旋矩阵Ⅱ
- LintCode 38 搜索二维矩阵 II
- [LintCode] 螺旋矩阵 Spiral Matrix
- 螺旋矩阵 II
- 螺旋矩阵 II
- [LintCode]374.螺旋矩阵
- LintCode:搜索二维矩阵 II
- [C++]LeetCode: 111 Spiral Matrix II (螺旋写入矩阵)
- [LintCode]38.搜索二维矩阵 II