題目思路:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。
四個迴圈,每次執行前先判斷邊界條件:start_y > row、start_x >col。
總結:c++
class
solution;}
vector<
int> res;
int col = matrix[0]
.size()
-1;int row = matrix.
size()
-1;int start_x =0;
//豎著的
int start_y =0;
//橫著的
while
(true
) start_y++;if
(start_y > row)
break
;// 從上到下
for(
int i = start_y; i <= row;
++i)
res.
push_back
(matrix[i]
[col]);
col--;if
(start_x > col)
break
;// 從右到左
for(
int i = col; i >= start_x;
--i)
res.
push_back
(matrix[row]
[i])
; row--;if
(start_y > row)
break
;// 從下到上
for(
int i = row; i >= start_y;
--i)
res.
push_back
(matrix[i]
[start_x]);
start_x++;if
(start_x > col)
break;}
return res;}}
;
python
class
solution
:def
spiralorder
(self, matrix:[[
int]])
->
[int]:
res =
ifnot matrix:
return
start_x =
0#起始行
start_y =
0#起始列
row =
len(matrix)-1
# 行 col =
len(matrix[0]
)-1# 列
while
true
:for i in
range
(start_x, col +1)
:# 左-->右
[i])
start_y +=
1if start_y > row:
break
for i in
range
(start_y, row +1)
:# 上-->下
[col]
) col -=
1if start_x > col:
break
for i in
range
(col, start_x -1,
-1):
# 右-->左
[i])
row -=
1if start_y > row:
break
for i in
range
(row, start_y -1,
-1):
# 下-->上
[start_x]
) start_x +=
1if start_x > col:
break
return res
劍指Offer 面試題29 順時針列印矩陣
面試題29 順時針列印矩陣 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。從上到下列印一列 if start 從右到左列印一行 if start 從下到上列印一列 if start void printmatrixclockwisely int numbers,int colu...
劍指offer 面試題29 順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。示例 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...
劍指offer 面試題29 順時針列印矩陣
面試題29.順時針列印矩陣 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。示例 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,...