python 劍指offer 順時針列印矩陣

2021-09-24 13:16:43 字數 1948 閱讀 8110

把矩陣想象成若干個圈,可以用乙個迴圈來列印矩陣,每次列印矩陣中的乙個圈。

1# 最後一行

col = cols - start -

1# left->right

for c in

range

(start, col+1)

:[c]

)# top->bottom

''' 終止行號大於起始行號

'''if start < row:

for r in

range

(start+

1, row+1)

:[col]

)# right->left

''' 至少有兩行兩列

終止行號大於起始行號,並且終止列號大於起始列號

'''if start < row and start < col:

for c in

range

(start, col)[:

:-1]

:[c]

)# bottom->top

''' 至少有三行兩列

終止行號至少比起始行號大2,並且終止列號大於起始列號

'''if start < row-

1and start < col:

for r in

range

(start+

1, row)[:

:-1]

:[start]

)注意

在從右向左,以及從下往上列印的時候,遍歷的範圍是這樣的:

range

(start, col)[:

:-1]

range

(start+

1, row)[:

:-1]

start=0,col=3時,

>>

>

print

(list

(range(0

,3)[

::-1

]))[

2,1,

0]

對應的是:

注意

取值範圍不能寫成range(col, start, -1)

>>

>

print

(list

(range(3

,0,-

1)))

[3,2,1]

參考:

劍指offer 順時針列印矩陣(python)

遇到這在那個題目就用魔方旋轉的方法 可以模擬魔方逆時針旋轉的方法,一直做取出第一行的操作 例如1 2 3 4 5 6 7 8 9 輸出並刪除第一行後,再進行一次逆時針旋轉,就變成 6 95 8 4 7繼續重複上述操作即可。coding utf 8 class solution def printma...

劍指offer 順時針列印矩陣

題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。分析 第一次看到這個題目的時候,覺得...

劍指offer 順時針列印矩陣

題目描述 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路 遞迴列印,處理好邊界就ok...