把矩陣想象成若干個圈,可以用乙個迴圈來列印矩陣,每次列印矩陣中的乙個圈。
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...