CC BY 4.0(除特别声明或转载文章外)
📝题目
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,4,7,5,3,6,8,9]
📝思路
找规律,分奇偶讨论。
📝题解
vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
int row = matrix.size();
vector<int> result;
if (row <= 0) return result;
int column = matrix[0].size();
for (int i = 0; i < row; ++i){
if (i % 2 == 0){
for (int j = 0; j < column; ++j)
if (i - j >= 0) result.push_back(matrix[i-j][j]);
}
else {
for (int j = column-1; j >= 0; --j)
if (i - j >= 0) result.push_back(matrix[i-j][j]);
}
}
for (int j = 1; j < column; ++j){
if ((row+j) % 2 == 1){
for (int i = 0; i < column-j; ++i)
if (row-1-i >= 0) result.push_back(matrix[row-1-i][j+i]);
}
else {
for (int i = column-j-1; i >= 0; --i)
if (row-1-i >= 0) result.push_back(matrix[row-1-i][j+i]);
}
}
return result;
}