题目描述
给你一个大小为 m x n
的矩阵 mat
,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
输入输出
1 | 输入:mat = [[1,2,3],[4,5,6],[7,8,9]] |
基本思路
模拟打印出来的全过程 一共有m + n - 1
条对角线 如果是偶数 则从下往上 奇数 则从上往下
当第 i 条对角线从下往上遍历时,每次行索引减 1,列索引加 1,直到矩阵的边缘为止:
当 i < m 时,则此时对角线遍历的起点位置为 (i,0);
当 i ≥ m 时,则此时对角线遍历的起点位置为 (m - 1, i - m + 1);
当第 i 条对角线从上往下遍历时,每次行索引加 1,列索引减 1,直到矩阵的边缘为止:
- 当 i < n 时,则此时对角线遍历的起点位置为 (0, i);
- 当 i ≥ n 时,则此时对角线遍历的起点位置为 (i - n + 1, n - 1);
java实现
1 | class Solution { |