1. 问题描述:

给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
示例:
输入:
[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]
输出:  [1,2,4,7,5,3,6,8,9]
解释:

说明:
给定矩阵中的元素总数不会超过 100000 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diagonal-traverse

2. 思路分析:

对于这种题目我们主要是看怎么样枚举即可,我们可以枚举每一条对角线,分为偶数下标与奇数下标进行枚举,偶数下标的时候从下往上的方向记录答案,奇数下标的时候从上往下的方向记录答案,我们可以先确定一个方向的枚举规律,这里以偶数下标为例(从下往上枚举行),可以发现横坐标为行数与当前枚举的是第i条对角线的最小值,到什么时候枚举结束呢?我们可以找一下最后一个位置的的行号,可以发现最后一个位置的行号为r - 1,那么从后往前需要减去的对角线数目得到的最小的行号为r - 1 - (r + c + 2 - i),整理一下可以得到1 - c + i,可以验证一下是正确的,当我们确定了一个方向之后的规律之后那么另外一个方向就是相反的,调整遍历的顺序即可。

3. 代码如下:

from typing import Listclass Solution:def findDiagonalOrder(self, w: List[List[int]]) -> List[int]:res = list()r, c = len(w), len(w[0])if r == 0 or c == 0: return resfor i in range(r + c - 1):# 分为奇数下标与偶数下标if i % 2 == 0:j = min(i, r - 1)while j >= max(0, 1 - c + i):res.append(w[j][i - j])j -= 1else:j = max(0, 1 - c + i)while j <= min(i, r - 1):res.append(w[j][i - j])j += 1return res

498 对角线遍历(找规律)相关推荐

  1. 498. 对角线遍历

    498. 对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ ...

  2. 【498. 对角线遍历】

    来源:力扣(LeetCode) 描述: 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素. 示例 1: 输入:mat = [[1,2,3],[4, ...

  3. LeetCode498之对角线遍历(寻找规律)

    题目描述 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素. 示例 1: 输入:mat = [[1,2,3],[4,5,6],[7,8,9]] 输 ...

  4. 力扣498. 对角线遍历

    给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素. 代码思路:以第一行和右边最后一列作为每轮的开始元素,先用temp存储,全部按 从左上到右下 的 ...

  5. 【中等】【数组】498 - 对角线遍历(diagonal-traverse)

    一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 题目 三 解题思路 四 统计分析 五 解题套路 二 题目 给定一个含有 M x N 个元素的矩阵(M 行,N 列), 请以对角线遍历的顺序 ...

  6. LeetCode 对角线遍历(找规律)

    一.LeetCode 498 对角线遍历 题目描述: 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 思路: 参考题解 ...

  7. java对角线遍历_Leetcode 498:对角线遍历Diagonal Traverse(python3、java)

    对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. Given a matrix of M x N elemen ...

  8. 3.对角线遍历(LeetCode第498题)

    一.题目描述 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ...

  9. LeetCode(498):对角线遍历 Diagonal Traverse(Java)

    2019.11.7 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新) github:https://github.com/ChopinXBP/LeetCode-Babel 逻辑推 ...

最新文章

  1. 市值达 58 亿美元,吴恩达的在线教育平台 Coursera 正式上市
  2. 《spring 2.0技术手册》入门不错!
  3. IOS设计模式的六大设计原则之开放-关闭原则(OCP,Open-Close Principle)
  4. camel java_与Java EE和Camel的轻量级集成
  5. 20线程测试cpu性能软件,评测平台介绍、CPU多线程性能测试
  6. 【OpenCV 例程200篇】32. 图像的扭变(错切)
  7. ThinkPHP6项目基操(10.不可预知的內部异常处理)
  8. luvcview-0.2.4移植
  9. mysql vs0215_0215 docker环境
  10. 软件开发项目过程管理文档
  11. CFA一级学习笔记--衍生品(一)--概念以及定义
  12. 三个臭皮匠赛过诸葛亮!白话Blending和Bagging
  13. 【智能优化算法】鸡群算法 (Chicken Swarm Optimization, CSO),2014
  14. sql server 入门教程
  15. *通配符与微信小程序的WXSS
  16. window服务如何通过程序如何打开谷歌浏览器并登陆指定网站_亚马逊如何看listing销量,亚马逊如何看销量排名...
  17. iFixit 拆解 Surface 平板:可维修性不高 (图)
  18. 微信小程序实现星级评价和效果展示
  19. [Vue]点击事件获取元素本身及事件
  20. python seo编程_「SEO及应用编程」开课!

热门文章

  1. 直播实录|百度大脑EasyDL是如何帮助NLP文本提升标注效率的?又如何进行复杂文本分类的?
  2. 重装系统后开机黑屏显示cannot load file怎么办
  3. 2021年凤翔中学高考成绩查询,宝鸡高中学校实力排名,2021年宝鸡所有的高中分数线排名...
  4. NestJS 7.x 折腾记: (4) Swagger接入及相关用法
  5. Spring Cloud ZooKeeper Discovery Client Not Register on ZooKeeper when using SpringBootServletInitia
  6. Symbian程序安装不成功的解决方法
  7. for of与for in的区别
  8. CefSharp的ChromiumWebBrowser截出来的图片是空白
  9. FPS游戏开发(3)
  10. jzoj9382泡泡龙