跳到主要内容

498.对角线遍历

链接:498.对角线遍历
难度:Medium
标签:数组、矩阵、模拟
简介:给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。

题解 1 - cpp

  • 编辑时间:2022-06-14
  • 执行用时:24ms
  • 内存消耗:17.9MB
  • 编程语言:cpp
  • 解法介绍:遍历,内嵌两个 while 进行反复循环。
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
int n = mat.size(), m = mat[0].size(), i = 0, j = 0;
vector<int> ans;
while (i != n - 1 || j != m - 1) {
while (i != -1 && j != m) ans.push_back(mat[i--][j++]);
i++;
if (j == m) j--, i++;
if (i == n - 1 && j == m - 1) break;
while (i != n && j != -1) ans.push_back(mat[i++][j--]);
j++;
if (i == n) i--, j++;
if (i == n - 1 && j == m - 1) break;
}
ans.push_back(mat[i][j]);
return ans;
}
};