您的位置:首页 > 编程语言 > Go语言

[LeetCode]498. Diagonal Traverse

2017-03-17 08:37 239 查看
https://leetcode.com/problems/diagonal-traverse/#/description

输出对角线路径

一共两个方向:row + 1 && col - 1 || row - 1 && col + 1

先判断是否右或下越界

public class Solution {
public int[] findDiagonalOrder(int[][] matrix) {
if (matrix == null || matrix.length == 0) {
return new int[0];
}
int m = matrix.length;
int n = matrix[0].length;
int[] res = new int[m * n];
int row = 0;
int col = 0;
int d = 1;
for (int i = 0; i < res.length; i++) {
res[i] = matrix[row][col];
row -= d;
col += d;
// 要先判断 大于等于的,否则矩形右上角有问题
if (row >= m) {
row = m - 1;
col += 2;
d = -d;
}
if (col >= n) {
col = n - 1;
row += 2;
d = -d;
}
if (row < 0) {
row = 0;
d = -d;
}
if (col < 0) {
col = 0;
d = -d;
}
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: