這題難度中等,記錄下思路
第一個會超時,
第二個:思想是按斜對角線行進行右下左上交替遍歷,
1
def
traverse(matrix):
2
n=len(matrix)-1
3
m=len(matrix[0])-1
4
result=
[]
5
for
i
in
range(m+n+1
):
6
if
(i % 2 ==
0):
7
for
j
in
range(i, -1, -1
):
8
x=
j
9
y=i-
x
10
if
x <= n
and
y <=
m:
11
result.append(matrix[x][y])
12
#
elif y > m:
13
#
break
14
else
:
15
continue
16
else
:
17
for
j
in
range(i, -1, -1
):
18
y=
j
19
x=i-
y
20
if
x <= n
and
y <=
m:
21
result.append(matrix[x][y])
22
#
elif x > n:
23
#
break
24
else
:
25
continue
26
return
result
27
28
if
__name__
==
'
__main__
'
:
29
ma=
[
30
[ 1, 2, 3
],
31
[ 4, 5, 6
],
32
[ 7, 8, 9
]
33
]
34
print
(traverse(ma))
?
11
1
def
diagonial(matrix):
2
m=
len(matrix)
3
n=
len(matrix[0])
4
#
思想是按斜對角線行進行遍歷
5
#
遍歷的方向右下,左上交替進行
6
line=
0
7
res=
[]
8
tem=
[]
9
is_sure=
True
10
#
對每一行進行循環 斜對角線有m+n-1條
11
while
line<(m+n-1
):
12
#
設置起點
13
if
(line<
m):
14
x=
line
15
y=
0
16
else
:
17
x=m-1
18
y=line-m-1
19
#
每行循環幾次
20
#
因為都是從右上開始,所以設置條件x>0,y
21
while
x>=0
and
y <
n:
22
#
存儲斜行的元素
23
tem.append(matrix[x][y])
24
x-=1
25
y+=1
26
#
如果是左下開始,則反向添加
27
if
(is_sure):
28
tem.reverse()
29
for
num
in
tem:
30
res.append(num)
31
line+=1
32
return
res
33
34
35
if
__name__
==
'
__main__
'
:
36
matrix=
[
37
[ 1, 2, 3
],
38
[ 4, 5, 6
],
39
[ 7, 8, 9
]
40
]
41
print
(diagonial(matrix))
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

