Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 » 题解 » 

Leetcode Spiral Matrix II

Leetcode algorithms 第 59 题:Spiral Matrix II。

题目

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到n^2的螺旋矩阵,直接模拟,一圈一圈进行填充。每次找到该圈的左上角位置,依次向右、向下、向左、向上进行填充。

这里一定的正方形,情况比矩形简单。

具体代码如下:

class Solution {
public:
    vector<vector<int> > generateMatrix(int n) {
        vector<vector<int>> v(n, vector<int>(n)); //一定是正方形,比矩形情况简单
        for (int i = 0, cnt = 1, d = n; i <= (n - 1)/ 2; i++, d -= 2)
        {
            int x = i, y = i;
            for (int i = 0; i < d; i++) v[x][y+i] = cnt++;
            y += d - 1;
            for (int i = 1; i < d; i++) v[x+i][y] = cnt++;
            x += d - 1;
            for (int i = 1; i < d; i++) v[x][y-i] = cnt++;
            y -= d - 1;
            for (int i = 1; i < d-1; i++) v[x-i][y] = cnt++;
        }
        return v;
    }
};
上一篇: 下一篇:

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论