[LeetCode] 59. Spiral Matrix II

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了[LeetCode] 59. Spiral Matrix II脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

[LeetCode] 59. Spiral Matrix II

题目

Given a positive integer n, generate an n x n matrix filled with elements from 1 to n2 in spiral order.

Example 1:

[LeetCode] 59. Spiral Matrix II

Input: n = 3 Output: [[1,2,3],[8,9,4],[7,6,5]]

思路

  1. 模拟
  2. 按层模拟(一层一层的填)

代码

用模拟写的,按层模拟见官方题解https://leetcode-cn wangt.cc /problems/spiral-matrix-ii/solution/luo-xuan-ju-zhen-ii-by-leetcode-solution-f7fp/

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int mni = 0, mxi = n - 1;
        int mnj = 0, mxj = n - 1;
        int i = 0, j = 0, di = 0, dj = 1;
        vector<vector<int>> ans;
        ans.resize(n);
        for (int i = 0; i < n; i++) {
            ans[i].resize(n);
        }
        int cur = 1;
        while(mni <= mxi && mnj <= mxj) {
            ans[i][j] = cur++;
            if (di == -1 && i == mni && j == mnj) {
                di = 0;
                dj = 1;
                mnj++;
            } else if (dj == 1 && i == mni && j == mxj) {
                di = 1;
                dj = 0;
                mni++;
            } else if (di == 1 && i == mxi && j == mxj) {
                di = 0;
                dj = -1;
                mxj--;
            } else if (dj == -1 && i == mxi && j == mnj) {
                di = -1;
                dj = 0;
                mxi--;
            }
            i += di;
            j += dj;
        }
        return ans;
    }
};

脚本宝典总结

以上是脚本宝典为你收集整理的[LeetCode] 59. Spiral Matrix II全部内容,希望文章能够帮你解决[LeetCode] 59. Spiral Matrix II所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: