# 螺旋矩阵

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

 

示例 1:

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

示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:
[1,2,3,4,8,12,11,10,9,5,6,7]

 

提示:

以下程序实现了这一功能,请你填补空白处内容: ```cpp #include using namespace std; class Solution { public: vector spiralOrder(vector> &matrix) { vector ans; if (matrix.size() == 0) return ans; int cir = 0; int row = matrix.size(); int col = matrix[0].size(); int max_cir = int(min(matrix.size(), matrix[0].size()) + 1) / 2; for (; cir < max_cir; cir++) { for (int i = cir; i < col - cir; i++) { ans.push_back(matrix[cir][i]); } for (int i = cir + 1; i < row - cir; i++) { ans.push_back(matrix[i][col - 1 - cir]); } __________________; for (int i = row - 2 - cir; i > cir && (col - 1 - cir != cir); i--) { ans.push_back(matrix[i][cir]); } } return ans; } }; ``` ## template ```cpp #include using namespace std; class Solution { public: vector spiralOrder(vector> &matrix) { vector ans; if (matrix.size() == 0) return ans; int cir = 0; int row = matrix.size(); int col = matrix[0].size(); int max_cir = int(min(matrix.size(), matrix[0].size()) + 1) / 2; for (; cir < max_cir; cir++) { for (int i = cir; i < col - cir; i++) { ans.push_back(matrix[cir][i]); } for (int i = cir + 1; i < row - cir; i++) { ans.push_back(matrix[i][col - 1 - cir]); } for (int i = col - 2 - cir; i >= cir && (row - 1 - cir != cir); i--) { ans.push_back(matrix[row - cir - 1][i]); } for (int i = row - 2 - cir; i > cir && (col - 1 - cir != cir); i--) { ans.push_back(matrix[i][cir]); } } return ans; } }; ``` ## 答案 ```cpp for (int i = col - 2 - cir; i >= cir && (row - 1 - cir != cir); i--) { ans.push_back(matrix[row - cir - 1][i]); } ``` ## 选项 ### A ```cpp for (int i = col - 2 - cir; i >= cir && (row - 1 - cir != cir); i--) { ans.push_back(matrix[row - cir + 1][i]); } ``` ### B ```cpp for (int i = col - 2 - cir; i >= cir && (row - 1 - cir != cir); i--) { ans.push_back(matrix[row - cir][i]); } ``` ### C ```cpp for (int i = col - 2 - cir;row - 1 - cir != cir; i--) { ans.push_back(matrix[row - cir + 1][i]); } ```