Solution:
This question is pretty straightforward. So it is designed for implementation details, i.e. boundary conditions.
Code:
class Solution { public: vector<int> findDiagonalOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty()||matrix.front().empty()) return res; int m = matrix.size(), n=matrix.front().size(); for(int i=0; i<n+m-1; ++i){ if(!(i%2)){//slop as 1; int x = min(i, m-1), y = i-x; //initial position; while(x>=0&&y<n) res.push_back(matrix[x--][y++]); } else{//slop as -1; int y = min(i, n-1), x = i-y;//initial position; while(x<m&&y>=0) res.push_back(matrix[x++][y--]); } } return res; } };
No comments :
Post a Comment