【題目】
給定乙個整型矩陣matrix,請按照轉圈的方式列印它。
例如: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
【要求】
額外空間複雜度為o(1)
【難度】1星
# -*- coding:utf-8 -*-
'''c
語言改編
cxy主要思想:tr,
tc代表左上角座標dr,
dc代表右下角座標
取外層進行轉圈列印後縮小圈進行裡圈列印。
'''#
定義乙個函式,按照這個函式來進行圈縮小
def
spiralorder(matrix):
tr =
0tc =
0dr =
len(matrix) -
1dc =
len(matrix[
0]) -
1while(tr <= drandtc <= dc):
printedge(matrix
, tr
, tc
, dr
, dc)
tr +=
1tc +=
1dr -=
1dc -=
1# printedge
函式用於轉圈列印
def
printedge(matrix
, tr
, tc
, dr
, dc):
iftr == dr:
foriinrange
(tc,
dc + 1):
(matrix[tr][i])
eliftc == dc:
foriinrange
(tr,
dr + 1):
(matrix[i][tc])
else:
curc = tc
curr = tr
whilecurc != dc:
(matrix[tr][curc])
curc +=
1whilecurr != dr:
(matrix[curr][dc])
curr +=
1whilecurc != tc:
(matrix[dr][curc])
curc -=
1whilecurr != tr:
(matrix[curr][tc])
curr -=
1if__name__in"__main__"
:matrix = [[1,
2,3,
4],[
5,6,
7,8]
,[9,
10,11,
12],[
13,14,
15,16]]
(spiralorder(matrix))
轉圈列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序一次列印出每乙個數字。例如 輸入如下矩陣 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這個題的解法很簡單,就是矩陣分圈處理,每次都要列印最外...
轉圈列印矩陣
題目 給定乙個整形矩陣matrix,請按照轉圈的方式列印它。例如 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 要求 額外空間複雜度為o 1 分析 如果把思路限制在區域性座標怎麼...
轉圈列印矩陣
題目 給定乙個整型矩陣matrix,請按照轉圈的方式列印它。例如 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 要求 額外空間複雜度為o 1 思路 巨集觀代替微觀的思想 1 先列...