zoukankan      html  css  js  c++  java
  • 对角线遍历

    题目:给定一个含有 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要对齐才表示一个嵌套内

  • 相关阅读:
    3-8
    3-7
    3-5
    3-4
    3-3
    3-2
    3-1
    2-11
    2-10
    2-9
  • 原文地址:https://www.cnblogs.com/dmndxld/p/10807662.html
Copyright © 2011-2022 走看看