對角線遍歷


題目:給定一個含有 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要對齊才表示一個嵌套內


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM