54 螺旋矩陣

2022-05-19 16:42:36 字數 1811 閱讀 1835

給定乙個包含 m x n 個元素的矩陣(m 行, n 列),請按照順時針螺旋順序,返回矩陣中的所有元素。

示例 1:

輸入:[

[ 1, 2, 3 ],

[ 4, 5, 6 ],

[ 7, 8, 9 ]

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

示例 2:

輸入:[

[1, 2, 3, 4],

[5, 6, 7, 8],

[9,10,11,12]

]輸出: [1,2,3,4,8,12,11,10,9,5,6,7]

外一層,裡一層的遞迴插入要返回的向量中。

執行遞迴插入操作的函式是void insert_to_vec(vector>& matrix, int left_top_row, int left_top_col, int right_bottom_row, int right_bottom_col)

它包含5個引數:

1. 矩陣

2. 左上角的行

3. 左上角的列

4. 右下角的行

5. 右下角的列

left_top_row > right_bottom_row || left_top_col > right_bottom_col是遞迴的中止條件,

left_top_row == right_bottom_rowleft_top_col == right_bottom_col是特殊邊界,

整個插入按照左上到右上,右上到右下,右下到左下,左下到左上的流程走完,

然後進行裡一層的插入,即呼叫insert_to_vec(matrix, left_top_row+1, left_top_col+1, right_bottom_row-1, right_bottom_col-1);.

class solution 

insert_to_vec(matrix, 0, 0, row-1, col-1);

return ansvec;

}void insert_to_vec(vector>& matrix, int left_top_row, int left_top_col, int right_bottom_row, int right_bottom_col)

if (left_top_col == right_bottom_col)

for(int i = left_top_col; i <= right_bottom_col; i++)

ansvec.push_back(matrix[left_top_row][i]);

for(int i = left_top_row + 1; i <= right_bottom_row; i++)

ansvec.push_back(matrix[i][right_bottom_col]);

for(int i = right_bottom_col - 1; i >= left_top_col; i--)

ansvec.push_back(matrix[right_bottom_row][i]);

for(int i = right_bottom_row - 1; i > left_top_row; i--)

ansvec.push_back(matrix[i][left_top_col]);

insert_to_vec(matrix, left_top_row+1, left_top_col+1, right_bottom_row-1, right_bottom_col-1);

}};

54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11...

54 螺旋矩陣

給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。輸入 1,2,3 4,5,6 7,8,9 輸出 1 2,3 6,9 8,7 4,5 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1 2,3 4,8 12,11 10,9 5,6 ...

54 螺旋矩陣

題目描述 給定乙個包含 m x n 個元素的矩陣 m 行,n 列 請按照順時針螺旋順序,返回矩陣中的所有元素。示例 1 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例2 輸入 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,1...