LeetCode 498. 对角线遍历(直接模拟)

给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。


diag1-grid.jpg

使用了笨方法,每次都是从右上到左下,奇数次反着加入数组。

class Solution:
    def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:

        m = len(mat)
        n = len(mat[0])

            # 1 2 3
            # 4 5 6
            # 7 8 9

        arr = []
        
        for i in range(n):
            x = 0
            y = i

            temp = []
            while y > -1 and x < m:

                # print('x, y:', x, y)
                # print('mat', mat[x][y])

                temp.append(mat[x][y])

                x += 1
                y -= 1

            if i % 2 != 0:
                for v in temp:
                    arr.append(v)
            else:
                for v in temp[::-1]:
                    arr.append(v)

        for i in range(1, m):
            x = i
            y = n-1
            
            temp = []
            while y > -1 and x < m:
                # print('x, y:', x, y)
                # print('mat', mat[x][y])

                temp.append(mat[x][y])

                x += 1
                y -= 1

            if (n+i) % 2 == 0:
                for v in temp:
                    arr.append(v)
            else:
                for v in temp[::-1]:
                    arr.append(v)                

        return arr

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 给定一个含有 M x N 个元素的矩阵(M行,N列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角...
    鱼枕阅读 1,123评论 0 0
  • 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1...
    刘翊扬阅读 122评论 0 1
  • 题目: 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 ...
    程序员小2阅读 725评论 0 9
  • 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历...
    饼干不干阅读 969评论 0 51
  • 题目 难度:★★★☆☆类型:数组方法:理清思路 力扣链接请移步本题传送门[https://leetcode-cn....
    玖月晴阅读 758评论 0 0