对角线遍历
题目:给定一个含有 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要对齐才表示一个嵌套内
posted on 2019-05-04 10:24 imyourterminal 阅读(1154) 评论(0) 编辑 收藏 举报