498. 对角线遍历

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

示例:

输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]

输出: [1,2,4,7,5,3,6,8,9]

解释:

说明:

给定矩阵中的元素总数不会超过 100000 。

解题思路

对于如下矩阵,我们以矩阵上边界和右边界的点作为起点开始遍历,我们统一以左下方为方向进行遍历

[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]
]

但是题目中显然是存在左下方遍历和右上方遍历交替进行的,但是问题在于他们的起点难以确定,所以我们统一以左下方为基准,后面再对元素进行翻转

代码

class Solution {public int[] findDiagonalOrder(int[][] mat) {int n=mat.length,m=mat[0].length;int[] res = new int[n * m];int p=0;boolean pos=false;for (int i=0;i<m;i++){int x=0,y=i,l=p;while (x>=0&&x<n&&y>=0&&y<m){ res[p++]=mat[x][y];x++;y--;}       int r=p-1;if(!pos){while (l<r){int t=res[l];res[l]=res[r];res[r]=t;l++;r--;}}pos=!pos;}for (int i=1;i<n;i++){int x=i,y=m-1,l=p;while (x>=0&&x<n&&y>=0&&y<m){res[p++]=mat[x][y];x++;y--;}int r=p-1;if(!pos){while (l<r){int t=res[l];res[l]=res[r];res[r]=t;l++;r--;}}pos=!pos;}return res;}
}

498. 对角线遍历相关推荐

  1. 力扣498. 对角线遍历

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

  2. 【498. 对角线遍历】

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

  3. 498 对角线遍历(找规律)

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

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

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

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

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

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

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

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

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

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

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

  9. [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

最新文章

  1. oracle索引大小暴增_oracle 如何预估将要创建的索引的大小
  2. 汇编:call指令的应用
  3. Android 自定义阴影,自定义颜色样式
  4. docker安装mysql_Docker 安装 MySQL
  5. 腾讯云服务器性能测试心得经验总结
  6. Spring MVC 基础笔记
  7. python自动获取邮件数据_Python 获取测试报告内容并发送邮件
  8. 21个Docker 命令
  9. sql 教程_SQL
  10. Atitit usrqbg1834 html的逻辑化流程化 规范标准化解决方案
  11. BoundsChecker教程
  12. 除了孙宇晨 币圈还有这些人入不得、出不去
  13. Spring Boot基础学习笔记08
  14. 语音信号特征处理--Fbank\MFCC
  15. 下肢静脉曲张的病因具体有哪些?
  16. elment文件上传 展示点击下载
  17. vu2响应式原理 代码分析
  18. 字典树基础知识学习笔记
  19. NOI OJ 1.5 18:鸡尾酒疗法 C语言(包含一维数组的简单讲解)
  20. Codeforces1442 D. Sum(dp+分治优化)

热门文章

  1. (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
  2. Vivado工程文件分类
  3. 字符串函数参数传入传出(去空格)
  4. 大厂面试必问!如何写出高效率的SQL
  5. CSS的三种基础选择器,面试必问
  6. JS前台页面验证文本框非空
  7. 51Nod 1043 幸运号码
  8. Dinosaur Run - Dinosaur world Games
  9. Ext 与 Jquery 的结合应用
  10. spring boot redis 分布式锁