索引和为{偶}数,向上遍历,{横}索引值递减,遍历值依次是(x,0),(x-1,1),(x-2,2),…,(0,x)
索引和为{奇}数,向下遍历,{纵}索引值递减,遍历值依次是(0,y),(1,y-1),(2,y-2),…,(y,0)
题目:https://leetcode-cn.com/explore/featured/card/array-and-string/199/introduction-to-2d-array/774/
给定一个含有 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: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) { vector<int> ans; if(matrix.empty()) return ans; int i = 0,j = 0; int hang = matrix.size(); int lie = matrix[0].size(); for(int p = 0;p< hang *lie ; p++){ ans.push_back(matrix[i][j]); if((i+j)%2==0){ if(i==0 && j==lie-1) i++; else if(i==0 && j!=lie-1) j++; else if(i!=0 && j == lie-1) i++; else {i--;j++;} } else { if(i==hang-1) j++; else if(j==0) i++; else {i++;j--;} } } return ans; } };