螺旋矩陣題總結 (順時針列印矩陣)python

2021-09-27 15:33:06 字數 2186 閱讀 4469

第一道題的解題思路:按照從左到右,從上到下,從右到左,從下到上的順序依次列印矩陣中的數字,要注意的是判斷拐點的邊界條件,和時刻保持左不能大於右,上不能大於下。

**如下:

class

solution

:def

spiralorder

(self, matrix: list[list[

int]])

-> list[

int]:if

not matrix:

return

left =

0 top =

0 bottom =

len(matrix)-1

right =

len(matrix[0]

)-1 res =

while left <= right and top <= bottom:

# from left to right

for i in

range

(left, right +1)

:[i]

) top +=

1if top > bottom:

break

#from top to bottom

for i in

range

(top, bottom +1)

:[right]

) right -=

1if left > right:

break

#from right to left

for i in

range

(right, left -1,

-1):

[i])

bottom -=

1#from bottom to top

for i in

range

(bottom, top -1,

-1):

[left]

) left +=

1return res

第二道題是第一道題的變種,解題思路類似。

**如下

class

solution

:def

generatematrix

(self, n:

int)

->[[

int]]:

ifnot n:

return

left, right, top, bottom =

0, n -1,

0, n -

1 mat =[[

0for _ in

range

(n)]

for _ in

range

(n)]

num, tar =

1, n * n

while num <= tar:

for i in

range

(left, right +1)

:# left to right

mat[top]

[i]= num

num +=

1 top +=

1for i in

range

(top, bottom +1)

:# top to bottom

mat[i]

[right]

= num

num +=

1 right -=

1for i in

range

(right, left -1,

-1):

# right to left

mat[bottom]

[i]= num

num +=

1 bottom -=

1for i in

range

(bottom, top -1,

-1):

# bottom to top

mat[i]

[left]

= num

num +=

1 left +=

1return mat

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...

順時針列印矩陣

題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...

順時針列印矩陣

from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。網上聽說聽到包括autod...