Java实现 LeetCode 498 对角线遍历
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 。
PS:
对角线的特点就是x+y相等
class Solution {
   public int[] findDiagonalOrder(int[][] matrix) {
    if (matrix == null || matrix.length == 0) {
        return new int[]{};
    }
    int r = 0, c = 0;
    int row = matrix.length, col = matrix[0].length;
    int[] res = new int[row * col];
    for (int i = 0; i < res.length; i++) {
        res[i] = matrix[r][c];
        // r + c 即为遍历的层数,偶数向上遍历,奇数向下遍历
        if ((r + c) % 2 == 0) {
            if (c == col - 1) {
                // 往右移动一格准备向下遍历
                r++;
            } else if (r == 0) {
                // 往下移动一格准备向下遍历
                c++;
            } else {
                // 往上移动
                r--;
                c++;
            }
        } else {
            if (r == row - 1) {
                // 往右移动一格准备向上遍历
                c++;
            } else if (c == 0) {
                // 往上移动一格准备向上遍历
                r++;
            } else {
                // 往下移动
                r++;
                c--;
            }
        }
    }
    return res;
}
}
Java实现 LeetCode 498 对角线遍历的更多相关文章
- Leetcode 498.对角线遍历
		对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, ... 
- python(leetcode)498. 对角线遍历
		这题难度中等,记录下思路 第一个会超时, 第二个:思想是按斜对角线行进行右下左上交替遍历, def traverse(matrix): n=len(matrix)-1 m=len(matrix[0]) ... 
- LeetCode:对角线遍历【498】
		LeetCode:对角线遍历[498] 题目描述 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ ... 
- 498. (leetcode)对角线遍历
		498. 对角线遍历 根据题目的图像看,主要有两种走法,第一种是向右上(顺时针方向),第二种是向左下(逆时针)走 我们设 x ,y初始为0,分别对应横纵坐标 现在分析右上(0,2) 为例:(注意右上的 ... 
- Leetcode 498:对角线遍历Diagonal Traverse(python3、java)
		对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. Given a matrix of M x N elemen ... 
- [LeetCode] Diagonal Traverse 对角线遍历
		Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ... 
- Java for LeetCode 212 Word Search II
		Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ... 
- Java for LeetCode 044 Wildcard Matching
		Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ... 
- [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
		Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ... 
随机推荐
- 【Java基础总结】Java基础语法篇(上)
			Java基础语法 思维导图 一.Java语言介绍 1.Java应用平台 JavaSE(Java Platform Standard Edition):开发普通桌面和商务应用程序,是另外两类的基础 Ja ... 
- Day_12【集合】扩展案例1_利用集合的知识对长度为10的int数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序
			分析以下需求,并用代码实现 1.定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的 2.利用集合的知识对数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序 3 ... 
- HTTP Strict Transport Security (通常简称为HSTS)
			HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式. Freebuf百科:什么是Str ... 
- 前端组件:支持多选,支持选项筛选的下拉框选择器(基于Jquery和Bootstrap)
			效果图一:多选 效果图二:选项筛选 最后奉献源码,复制出来直接可用 <!DOCTYPE html> <html> <head> <meta charset=& ... 
- 【漫画】互斥锁ReentrantLock不好用?试试读写锁ReadWriteLock
			ReentrantLock完美实现了互斥,完美解决了并发问题.但是却意外发现它对于读多写少的场景效率实在不行.此时ReentrantReadWriteLock来救场了!一种适用于读多写少场景的锁,可以 ... 
- mysql批量导入删除
			批量导入 <insert id="extractOrderBaseHis">INSERT INTO `odr_order_base_his`(`order_base_i ... 
- python实现摇骰子猜大小函数升级没把加注及三大运行商短信验证过滤
			摇骰子游戏升级 此次更改增加下注功能,启动资金1000元,每次赔率都是一倍,钱输光退出. 源码: #!/user/bin/env python #-*-coding:utf-8 -*- #Author ... 
- Centos7安装jupyter notebook
			安装python3 查看当前python版本 [root@iz1i4qd6oynml0z /]# python -V Python 2.7.5 安装python3以及检查python3的版本 yum ... 
- MySQL的列约束
			1.列约束 (1)主键约束——PRIMARY KEY (2)非空约束——NOT NULL 声明了非空约束的列上,不允许使用NULL (3)唯一约束——UNIQUE 声明了唯一约束的列上不能插入重复的值 ... 
- scrapy爬取效率提升配置
			增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. 降低日志级别 ... 
