classSolution{public:
vector<int>spiralOrder(vector<vector<int>>& matrix){if(matrix.empty()|| matrix[0].empty()){//如果矩阵为空或者矩阵是零矩阵return{};//返回空数组}
vector<int> res;//定义一个返回数组int m = matrix.size(),n = matrix[0].size();//定义矩阵行和列int up =0, down = m -1, left =0, right = n -1;//定义矩阵上下左右四条边while(true){//循环遍历这个矩阵for(int i = left;i<=right;i++) res.push_back(matrix[up][i]);//从左往右遍历上边界,结果存入if(++up>down)break;//上边界大于下边界跳出循环for(int i = up;i<=down;i++) res.push_back(matrix[i][right]);//从上往下遍历右边界,结果存入 if(--right<left)break;//右边界小于左边界跳出循环for(int i = right;i>=left;i--) res.push_back(matrix[down][i]);//从右往左遍历下边界,结果存入 if(--down<up)break;//下边界小于上边界跳出循环for(int i = down;i>=up;i--) res.push_back(matrix[i][left]);//从下往上遍历左边界,结果存入if(++left>right)break;//左边界大于右边界跳出循环}return res;//返回最终的一维数组}};