轉圈列印矩陣

2021-08-09 23:27:45 字數 1935 閱讀 4726

【題目】

給定乙個整型矩陣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):

print

(matrix[tr][i])

eliftc == dc:

foriinrange

(tr,

dr + 1):

print

(matrix[i][tc])

else:

curc = tc

curr = tr

whilecurc != dc:

print

(matrix[tr][curc])

curc +=

1whilecurr != dr:

print

(matrix[curr][dc])

curr +=

1whilecurc != tc:

print

(matrix[dr][curc])

curc -=

1whilecurr != tr:

print

(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]]

print

(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 先列...