前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Leetcode 498. Diagonal Traverse

Leetcode 498. Diagonal Traverse

作者头像
Tyan
发布2021-07-27 15:49:46
4890
发布2021-07-27 15:49:46
举报
文章被收录于专栏:SnailTyanSnailTyanSnailTyan

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书

1. Description

Diagonal Traverse
Diagonal Traverse

2. Solution

**解析:**Version 1,根据矩阵对角线的规律,对角线的数量为m+n-1,对角线的起点(左下到右上)为第一列加上最后一行的数据,顺序为行数一次加1,列不变,到左下角后,行数不变,列数依次加1,对角线上的数据依次为行减1,列加1。由于是对角线遍历是连续的,因此,行数加列数的和为奇数时,需要反转对角线数据。

  • Version 1
class Solution:
    def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
        m = len(mat)
        n = len(mat[0])
        result = []
        i = -1
        j = 0
        for _ in range(m+n-1):
            if i != m -1:
                i += 1
            else:
                j += 1
            current_row = i
            current_column = j
            temp = []
            while current_row > -1 and current_column < n:
                temp.append(mat[current_row][current_column])
                current_row -= 1
                current_column += 1
            if (i + j) % 2 == 1:
                result += temp[::-1]
            else:
                result += temp
        return result

Reference

  1. https://leetcode.com/problems/diagonal-traverse/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Description
  • 2. Solution
  • Reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档