码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Spiral Matrix II

时间:2015-03-21 12:41:11      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

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 ]
]
题意:将1到n^2的数依次填写进去。

思路:和上一道回旋的类似做法。

class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        vector<vector<int> > ans;
        for (int i = 0; i < n; i++) {
            vector<int> t = vector<int>(n, -1);
            ans.push_back(t);
        }

        int dx[4] = {0, 1, 0, -1};
        int dy[4] = {1, 0, -1, 0};
        int dir = 0, x = 0, y = 0;
        for (int i = 1; i <= n*n; i++) {
            ans[x][y] = i;
            if (x+dx[dir] == n || x+dx[dir] < 0 ||
                y+dy[dir] == n || y+dy[dir] < 0 ||
                ans[x+dx[dir]][y+dy[dir]] != -1) {
                    dir = dir == 3 ? 0 : dir + 1;
            }
            x += dx[dir];
            y += dy[dir];
        }

        return ans;
    }
};



LeetCode Spiral Matrix II

标签:

原文地址:http://blog.csdn.net/u011345136/article/details/44514905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!