classSolution { public: vector<vector<int>> spiralMatrixIII(int R, int C, int r0, int c0) { vector<vector<int>> res = {{r0, c0}}; int dr[] = {0, 1, 0, -1}, dc[] = {1, 0, -1, 0}; int sz = 1, dir = 0, r = r0, c = c0; while (res.size() < R * C) { for (int i = 0; i < sz; ++i) { r += dr[dir]; c += dc[dir]; if (0 <= r && r < R && 0 <= c && c < C) { res.push_back({r, c}); } } dir = (dir + 1) % 4; // 方向每次转一下 sz += !(dir & 1); // 在每个方向上走的步数,每两个方向加一,即dir模2为0时加一 } return res; } };