[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;
}
}
输出对角线路径
一共两个方向: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;
}
}
相关文章推荐
- LeetCode 498. Diagonal Traverse
- LeetCode "498. Diagonal Traverse"
- [leetcode]498. Diagonal Traverse
- [leetcode] 498. Diagonal Traverse -- JavaScript 代码
- LeetCode笔记:498. Diagonal Traverse
- LeetCode: 498. Diagonal Traverse
- leetcode 498. Diagonal Traverse
- leetcode 498. Diagonal Traverse 矩阵对角遍历 + 控制方向即可
- Leetcode 498. Diagonal Traverse
- leetcode_498. Diagonal Traverse ? 待解决
- LeetCode - 498. Diagonal Traverse
- leetcode之Binary Tree Level Order Traverse
- [Leetcode] Postorder Traverse of Binary Tree
- 【Leetcode】238-Product of Array Except Self【Java实现】【Medium】【two way traverse】
- 498. Diagonal Traverse
- [每日一题]498. Diagonal Traverse
- LeetCode之levelTraverse
- 498. Diagonal Traverse
- LeetCode之levelTraverse
- [LeetCode] Diagonal Traverse 对角线遍历