【LeetCode】59. Spiral Matrix II

    xiaoxiao2021-03-25  107

    题目描述

    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 ] ]

    解题思路

    和【LeetCode】54. Spiral Matrix 思路一样。只是此次需要一个全局的计数器,每次往矩阵中写入当前计数值并增加计数器即可。

    AC代码

    class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> ans; for (int i = 0; i < n; ++i) { vector<int> temp(n, 0); ans.push_back(temp); } vector<vector<int>> dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; int nSteps[2] = {n, n -1}; int curDir = 0; int curRow = 0, curCol = -1; int totalCnt = 1; int cnt = 0; while (nSteps[curDir % 2]) { curRow += dirs[curDir][0]; curCol += dirs[curDir][1]; ans[curRow][curCol] = totalCnt; totalCnt++; cnt++; if (cnt == nSteps[curDir % 2]) { cnt = 0; nSteps[curDir % 2]--; curDir = (curDir + 1) % 4; } } return ans; } };
    转载请注明原文地址: https://ju.6miu.com/read-13984.html

    最新回复(0)