您的位置:首页 > 其它

Spiral Matrix II(leetcode)

2014-11-26 16:03 507 查看
题目:

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,

Given n =
3
,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

题目来源:https://oj.leetcode.com/problems/spiral-matrix-ii/

解题思路:同Spiral
Matrix (leetcode)

#include<iostream>
#include<vector>
using namespace std;

vector<vector<int> > generateMatrix(int n)
{
if(n<=0)
return vector<vector<int> >();
vector<vector<int> > matrix(n,vector<int>(n,0));;
int row=0,col=0,k=0;
while(1)
{
if(row>((n-1)>>1))//行和列是相等的,而且矩阵是方阵,不用判断列了
break;
for(int i=col;i<matrix.front().size()-col;i++)
matrix[row][i]=++k;
for(int i=row+1;i<matrix.size()-row;i++)
matrix[i][matrix.size()-col-1]=++k;
if(matrix.size()==row*2+1)//即当前的行是一个独行
break;
for(int i=matrix.size()-col-2;i>=col;i--)
matrix[matrix.size()-row-1][i]=++k;
if(matrix.size()==col*2+1)//即当前的列是一个独列
break;
for(int i=matrix.size()-row-2;i>row;i--)
matrix[i][col]=++k;
row++;
col++;
}
return matrix;
}

int main()
{
const int N=3;
vector<vector<int> > result=generateMatrix(N);

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: