classSolution{public:
vector<int>spiralOrder(vector<vector<int>>& matrix){
vector<int> res;int left =0;int right = matrix[0].size()-1;int up =0;int down = matrix.size()-1;while(left <= right && up <= down){for(int i = left; i <= right;++i)//从左到右,行不变{
res.push_back(matrix[up][i]);}++up;//下移一行for(int i = up; i <= down;++i)//从上到下,列不变{
res.push_back(matrix[i][right]);}--right;//左移一列if(left <= right && up <= down)//判断边界有效性,因为此时 right 和 up 已经发生变化{for(int i = right; i >= left;--i)//从右到左,行不变{
res.push_back(matrix[down][i]);}--down;//上移一行for(int i = down; i >= up;--i)//从下到上,列不变{
res.push_back(matrix[i][left]);}++left;//右移一列}}return res;}};
注意边界控制即可class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; int left = 0; int right = matrix[0].size() - 1; int up = 0; int down = matrix.size() - 1; while (lef.