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 int[] findDiagonalOrder(int[][] matrix) {
if(matrix==null||matrix.length==0) return new int[0];
int rowLength = matrix.length;
int columLength = matrix[0].length;
int amswer[] = new int[rowLength*columLength];
int count = rowLength + columLength - 1;
int m = 0;
int n = 0;
int amswerIndex = 0;
for(int i = 0;i < count;i++){
if(i%2==0){
while(m >= 0&&n < columLength){
amswer[amswerIndex] = matrix[m][n];
amswerIndex++;
m--;
n++;
}
if(n < columLength){
m++;
}else{
m = m + 2;
n--;
}
}else{
while(m < rowLength&&n >= 0){
amswer[amswerIndex] = matrix[m][n];
amswerIndex++;
m++;
n--;
}
if(m < rowLength){
n++;
}else{
m--;
n = n + 2;
}
}
}
return amswer;
}
}
执行结果:
通过
显示详情
执行用时:2 ms, 在所有 Java 提交中击败了97.84% 的用户
内存消耗:40.3 MB, 在所有 Java 提交中击败了86.45% 的用户