2019.11.7 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新)

github:https://github.com/ChopinXBP/LeetCode-Babel

逻辑推理题,乍一看不是很难,但是极其容易理错,写对也不容易。

观察发现,对角线端点沿着外围首行和最右列遍历,一共需要遍历times=row+col-1轮(times条对角线)。

在每一次遍历中,计算一次对角线遍历的起始端点位置(x,y)与遍历元素个数(行列取短)num。用direction代表对角线遍历方向,左下为true,反之为false。遍历顺序总是从右上到左下,但当遍历方向为左下时,数组顺序存储;反之逆序存储。


传送门:对角线遍历

Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.

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

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


/**** Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal order as shown in the below image.* 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。**/public class DiagonalTraverse {public int[] findDiagonalOrder(int[][] matrix) {if(matrix.length == 0){return new int[0];}int row = matrix.length;int col = matrix[0].length;int[] result = new int[row * col];//对角线端点沿着外围首行和最右列遍历,一共需要遍历times=row+col-1轮(times条对角线)//direction代表对角线遍历方向,左下为true,反之为false。boolean direction = false;int times = 0;int idx = 0;while(times < row + col - 1){//位置(x,y)代表对角线遍历的起始端点,num为遍历元素个数(行列取短)int x = times < col ? 0 : times - col + 1;int y = times < col ? times : col - 1;int num = times < col ? Math.min(y + 1, row) : Math.min(row - x, col);//遍历顺序总是从右上到左下,但当遍历方向为左下时,数组顺序存储;反之逆序存储。int loc = direction ? idx : idx + num - 1;while(num-- != 0){result[loc] = matrix[x++][y--];loc = direction ? loc + 1 : loc - 1;idx++;}direction = !direction;times++;}return result;}
}

#Coding一小时,Copying一秒钟。留个言点个赞呗,谢谢你#

LeetCode(498):对角线遍历 Diagonal Traverse(Java)相关推荐

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

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

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

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

  3. 498. 对角线遍历

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

  4. 【498. 对角线遍历】

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

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

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

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

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

  7. 力扣498. 对角线遍历

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

  8. leetcode练习 对角线遍历(二维数组)

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

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

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

最新文章

  1. #pragma pack 内存对齐
  2. 统计php脚本执行时间的php扩展
  3. numpy.ravel() vs numpy.flatten()
  4. python是c语言写的吗-C语言和python的区别
  5. myeclipse导出doc
  6. MySQL事务隔离级别及场景测试
  7. (转)利用个人电脑搭建网站WEB服务器域名访问
  8. LINUX不能恢复式安装
  9. 最新教程Instagram如何下载并注册
  10. 基于Java Swing的进销存管理系统
  11. Android升级WebView浏览器内核版本
  12. 南大周志华、俞扬、钱超最新力作:演化学习:理论与算法进展一书导读
  13. 本科毕业论文外文翻译必须要翻译全文吗?
  14. 搭建excel在线编辑服务器,开源免费!自动动手搭建一款更加强大的在线Excel工具...
  15. 【转载】Unity3D研究院之静态自动检查代码缺陷与隐患
  16. ie打开本地html页面慢,ie11 第一次浏览jquery+CSS3网页时候延时3秒
  17. 《决战大数据》读书笔记(一) 收集数据和使用数据要有关联
  18. 广义相对论-学习记录7-第三章-张量分析与黎曼几何4
  19. 产业分析:中国电竞行业研究
  20. DB2用户授权表查询权限

热门文章

  1. vue 登录界面无法跳转问题
  2. Fluka 安装及 pydicom
  3. 嵌入式课设-基于GPS模块的校园定位程序
  4. npi阶段是什么意思_NPI阶段发现重要性论述.doc
  5. 瞬变电磁数据读取显示,正演计算,及基础处理DLL文件调用
  6. 2015.03.10,学习,文献笔记-“水轮机压力脉动的混频幅值置信度分析方法研究” (1)...
  7. 模拟实现十字路口交通灯管理系统(Java)
  8. 百度网盘下载失败【1252017】误报违规
  9. PHP程序员的工作职责与薪酬待遇 -兄弟连IT教育
  10. Android 动画学习笔记(二)