Leetcode 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 。
class Solution {
public static int[] findDiagonalOrder(int[][] matrix) {
if (matrix.length == 0 || matrix[0].length == 0) {
return new int[0];
}
int m = matrix.length;
int n = matrix[0].length;
int[] order = new int[m * n];
int row = 0;
int col = 0;
//存储方向改变值,右上,或者左下
int[][] dirs = {{-1, 1}, {1, -1}};
int k = 0;
for (int i = 0; i < order.length; i++) {
//将当前坐标赋值给新数组
order[i] = matrix[row][col];
//计算下一个点的坐标
row += dirs[k][0];
col += dirs[k][1];
//根据边界条件,修正下一个点的坐标值.触碰边界,必然对方向取反
// 右上方向碰到边界
if (col > n - 1) {
col = n - 1;
row += 2;
//方向取反
k = 1 - k;
}
if (row < 0) {
row = 0;
k = 1 - k;
}
//左下方向碰到边界
if (row > m - 1) {
row = m - 1;
col += 2;
k = 1 - k;
}
if (col < 0) {
col = 0;
k = 1 - k;
}
}
return order;
}
}

class Solution {
public static int[] findDiagonalOrder(int[][] matrix) {
if (matrix.length == 0 || matrix[0].length == 0) {
return new int[0];
}
int m = matrix.length;
int n = matrix[0].length;
int[] order = new int[m * n];
int row = 0;
int col = 0;
//存储方向改变值,右上,或者左下
int[][] dirs = {{-1, 1}, {1, -1}};
int k = 0;
for (int i = 0; i < order.length; i++) {
//将当前坐标赋值给新数组
order[i] = matrix[row][col];
//计算下一个点的坐标
row += dirs[k][0];
col += dirs[k][1];
//根据边界条件,修正下一个点的坐标值.触碰边界,必然对方向取反
// 右上方向碰到边界
if (col > n - 1) {
col = n - 1;
row += 2;
//方向取反
k = 1 - k;
}
if (row < 0) {
row = 0;
k = 1 - k;
}
//左下方向碰到边界
if (row > m - 1) {
row = m - 1;
col += 2;
k = 1 - k;
}
if (col < 0) {
col = 0;
k = 1 - k;
}
}
return order;
}
}
Leetcode 498.对角线遍历的更多相关文章
- Java实现 LeetCode 498 对角线遍历
498. 对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ ...
- 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 ...
- [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...
- LeetCode498 对角线遍历
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], ...
- 498 Diagonal Traverse 对角线遍历
详见:https://leetcode.com/problems/diagonal-traverse/description/ C++: class Solution { public: vector ...
随机推荐
- Webstrom使用手册小记
全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10883350.html,多谢~=.= 1.从git上拉取项目 或者 2.切换分支(webstro ...
- Dll注入:Ring3 层 APC注入
APC,即Asynchronous procedure call,异步程序调用APC注入的原理是:在一个进程中,当一个执行到SleepEx()或者WaitForSingleObjectEx()时,系统 ...
- pc端的动态效果
一 图片围绕着某一个确定的圆心运动 几张图片在一个圆开始运动的几种情况 https://github.com/GainLoss/Plug-in-unit 这里面有两种情况
- 倍增LCA
前言 在做树上问题时,我们经常会遇到 \(LCA\)(最近公共祖先)问题.曾经的我遇到这类问题只会\(O(n)\)暴力求解,学了倍增\(LCA\),就可以\(O(logn)\)解决了. 简介 倍增\( ...
- 实现带查询功能的ComboBox控件
实现效果: 知识运用: ComboBox控件的AutoCompleteMode属性 public AutoCompleteMode AutoCompleteMode{get;set;} //属性值为枚 ...
- jQuery Pagination分页插件--刷新
源码地址:https://github.com/SeaLee02/FunctionModule/blob/master/UploadFiles/WebDemo/FenYE/FenYeDemo.aspx ...
- Oracle 换行符 空格符 回车符
① 换行符 chr(10)② 回车符 chr(13) ③ 空格符 chr(9) 例1:效果对比.chr(10)在一个字段中换行显示一列数据,chr(13)同样是换行显示一行数据,chr(9)会显示一个 ...
- 梁勇Java语言程序设计第三章全部例题 为第五次作业
完成例题3-1,通过系统当前时间毫秒值获取随机10以内的整数判断加的结果是否正确,不用if语句 package com.swift; import java.util.Scanner; public ...
- 井字游戏 人机对战 java实现
package com.ecnu.Main; /** * 主函数触发游戏 */public class MainApplication { public static void main(String ...
- 关于html标签的两种隐藏方式
做一个文章管理模块 有一个功能是需要根据文章分类来显示内容的标签 刚开始以为很简单 ,手放键盘上就是一顿敲. 如果类型是文章就是没问题 可是另外几种就有问题了 红框的标签一直不出来 后来找了半天然来 ...