劍指 面試題29 順時針列印矩陣

2021-10-04 15:00:28 字數 2195 閱讀 1414

題目

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。

思路:

四個迴圈,每次執行前先判斷邊界條件: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,...