本文共 881 字,大约阅读时间需要 2 分钟。
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 ] ]
思路参考:
还是一样按圈赋值,每一圈的起点分别为(0,0),(1,1)…..
class Solution {public: vector> generateMatrix(int n) { vector > ret; if(n==0) return ret; for(int i = 0 ; i < n ; i++) { vector tmp(n,0); ret.push_back(tmp); } int count = 0 ; int px = 0 , py = 0;//初始值 int start = 0;//每一圈的起点 while(start =start ; i--){ //从右往左 ret[px][i] = ++count; } py = i+1; for(i = px-1 ; i>=start + 1 ; i--){ //从下往上 ret[i][py] = ++count; } start++; px = py = start;//下一圈 } if(n%2==1) ret[px][py] =++count;//n为奇数的时候需要考虑中心值 return ret; }};
转载地址:http://eayli.baihongyu.com/