【LeetCode从零单刷】Spiral Matrix II

题目:

Given an integern, generate a square matrix filled with elements from 1 ton2in spiral order.

For example,Givenn=3,

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

解答:

重要的是找到循环的规律:每层环都可以由四个部分组成,第一个环每部分长为(n-1),第二个环每部分长为(n-3)…(n-2k)…如下图所示:

对于奇数与偶数不同的地方在于:奇数螺旋矩阵的最中间仅有一个部分组成,,取值为 n;偶数螺旋矩阵的最中间仍然是四个部分。

class Solution {public:vector<vector<int>> generateMatrix(int n) {vector<int> row(n, 0);vector<vector<int>> ans(n, row);if(n <= 0) return ans;int x = 0, y = 0;int num = 0;int a, b, c, d;for(int i=n-1; i>=0; i=i-2){if(i == 0) ans[x][y] = n*n;else{for(a = 0; a < i; a++){ans[x][y+a] = ++num;}y = y + i;for(b = 0; b < i; b++){ans[x+b][y] = ++num;}x = x + i;for(c = 0; c < i; c++){ans[x][y-c] = ++num;}y = y – i;for(d = 0; d < i; d++){ans[x-d][y] = ++num;}x = x – i + 1;y = y + 1;}}return ans;}};

版权声明:本文为博主原创文章,转载请联系我的新浪微博 @iamironyoung

在乎的是沿途的风景以及看风景的心情,让心灵去旅行!

【LeetCode从零单刷】Spiral Matrix II

相关文章:

你感兴趣的文章:

标签云: