文章

螺旋矩阵

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。…

· 更新于 2026/3/13 · 2 分钟阅读

leetcode.59

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

纯动脑题,理清逻辑即可,注意开区间闭区间的事就行。

#include <bits/stdc++.h>
#include <vector>
using namespace std;
class Solution {
public:
  vector<vector<int>> generateMatrix(int n) {
    int num = n * n, height = n, width = n,x=0,y=0;
    vector<vector<int>> mat(n,vector<int>(n));
    int nn = 1;
    while (nn <= num) {
      for (int i = 0; i < width; i++) {
        mat[y][x] = nn;
        nn++;
        x++;
      }
      height--;y++;x--;
      for (int i = 0; i < height; i++) {
        mat[y][x] = nn;
        nn++;
        y++;
      }
      width--;x--;y--;
      for (int i = 0; i < width; i++) {
        mat[y][x] = nn;
        nn++;
        x--;
      }
      height--;y--;x++;
      for (int i = 0; i < height; i++) {
        mat[y][x] = nn;
        nn++;
        y--;
      }
      width--;x++;y++;
    }
    return mat;
  }
};

‍

相关文章

二分查找

在递增或者递减的一列数中,依次用目前区间最中间的数跟target比较,根据比较结果更新区间,再循环这个过程,知道找到最中间数=target或区间长度为0为止