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