題目:給定一個含有 M x N 個元素的矩陣(M 行,N 列),請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。
說明:
輸入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 輸出: [1,2,4,7,5,3,6,8,9]
思路:觀察規律,主要思考這個矩陣是怎么遍歷的,遍歷方向如何,研究可得,遍歷方向由元素所在行列和決定,為偶數向上,奇數向下。
所以,即先創建空列表,然后append迭代添加即可。 還是自己多畫圖找規律。
class Solution: def findDiagonalOrder(self, matrix: List[List[int]]) -> List[int]: if(matrix==[]): return [] r=0 c=0 row=len(matrix) col=len(matrix[0]) a=row*col res=[] for i in range(a): res.append(matrix[r][c]) if((r+c)%2==0): if(c==col-1): r=r+1 elif(r==0): c=c+1 else: r=r-1 c=c+1 else: if(r==row-1): c=c+1 elif(c==0): r=r+1 else: r=r+1 c=c-1 return res
這里,編寫時出了倆錯,
第一個:r=0,c=0 不能這么寫,應該改為r,c=0,0
第二個:python里面沒有自增,自減;因為自增自減改變了對象本身,而Python的模型規定,數值對象是不可改變的。
第三個:if elif要對齊才表示一個嵌套內