59. Spiral Matrix II

来源:互联网 发布:java手机游戏培训 编辑:程序博客网 时间:2024/05/02 04:26

题目:

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 ]]
题意:

给定一个整数n,生成n*n形螺旋数组,如上所示。

转载链接:https://leetcode.com/discuss/21677/simple-c-solution-with-explaination

思路:

按照规律上右下左的顺序依次填充数字。

代码:

class Solution {public:    vector<vector<int>> generateMatrix(int n) {        vector<vector<int> > ret( n, vector<int>(n) );        int k = 1, i = 0;        while( k <= n * n )        {            int j = i;                // four steps            while( j < n - i )             // 1. horizonal, left to right                ret[i][j++] = k++;            j = i + 1;            while( j < n - i )             // 2. vertical, top to bottom                ret[j++][n-i-1] = k++;            j = n - i - 2;            while( j > i )                  // 3. horizonal, right to left                 ret[n-i-1][j--] = k++;            j = n - i - 1;            while( j > i )                  // 4. vertical, bottom to  top                 ret[j--][i] = k++;            i++;      // next loop        }        return ret;    }};

0 0