wordpress开启子站,app内测分发平台,黄做网站,如何做房产公司网站498. 对角线遍历
给定一个含有 M x N 个元素的矩阵#xff08;M 行#xff0c;N 列#xff09;#xff0c;请以对角线遍历的顺序返回这个矩阵中的所有元素#xff0c;对角线遍历如下图所示。
示例:
输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
输出: [1,2,4,7,5…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 。
解题思路
对于如下矩阵我们以矩阵上边界和右边界的点作为起点开始遍历我们统一以左下方为方向进行遍历
[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]
]但是题目中显然是存在左下方遍历和右上方遍历交替进行的但是问题在于他们的起点难以确定所以我们统一以左下方为基准后面再对元素进行翻转
代码
class Solution {public int[] findDiagonalOrder(int[][] mat) {int nmat.length,mmat[0].length;int[] res new int[n * m];int p0;boolean posfalse;for (int i0;im;i){int x0,yi,lp;while (x0xny0ym){ res[p]mat[x][y];x;y--;} int rp-1;if(!pos){while (lr){int tres[l];res[l]res[r];res[r]t;l;r--;}}pos!pos;}for (int i1;in;i){int xi,ym-1,lp;while (x0xny0ym){res[p]mat[x][y];x;y--;}int rp-1;if(!pos){while (lr){int tres[l];res[l]res[r];res[r]t;l;r--;}}pos!pos;}return res;}
}