-->

Saturday, February 4, 2017

[LeetCode] 498. Diagonal traverse

https://leetcode.com/contest/leetcode-weekly-contest-18b/problems/diagonal-traverse/

Solution:
This question is pretty straightforward. So it is designed for implementation details, i.e. boundary conditions.

Code:
  1. class Solution {
  2. public:
  3.     vector<int> findDiagonalOrder(vector<vector<int>>& matrix) {
  4.         vector<int> res;
  5.         if(matrix.empty()||matrix.front().empty()) return res;
  6.         int m = matrix.size(), n=matrix.front().size();
  7.         for(int i=0; i<n+m-1; ++i){
  8.             if(!(i%2)){//slop as 1;
  9.                 int x = min(i, m-1), y = i-x; //initial position;
  10.                 while(x>=0&&y<n) res.push_back(matrix[x--][y++]);
  11.             }
  12.             else{//slop as -1;
  13.                 int y = min(i, n-1), x = i-y;//initial position;
  14.                 while(x<m&&y>=0) res.push_back(matrix[x++][y--]);
  15.             }
  16.         }
  17.         return res;
  18.     }
  19. };

No comments :

Post a Comment