4/08/2014

Leetcode -- Spiral Matrix

class Solution {  
 public:  
   vector<int> spiralOrder(vector<vector<int> > &matrix) {  
     vector<int> result;  
     if(matrix.size() == 0) {  
       return result;  
     }  
     int m = matrix.size();  
     int n = matrix[0].size();  
     int count = m * n;  
     int i = 0, j = 0;  
     while(count) {  
       for(;j < n && matrix[i][j] != INT_MIN; ++j) {  
         result.emplace_back(matrix[i][j]);  
         matrix[i][j] = INT_MIN;  
         count--;  
       }  
       j--;  
       i++;  
       for(;i < m && matrix[i][j] != INT_MIN; ++i) {  
         result.emplace_back(matrix[i][j]);  
          matrix[i][j] = INT_MIN;  
          count--;  
       }  
       i--;  
       j--;  
       for(;j >=0 && matrix[i][j] != INT_MIN;--j) {  
         result.emplace_back(matrix[i][j]);  
          matrix[i][j] = INT_MIN;  
          count--;  
       }  
       j++;  
       i--;  
       for(;i >= 0 && matrix[i][j] != INT_MIN; --i) {  
         result.emplace_back(matrix[i][j]);  
          matrix[i][j] = INT_MIN;  
          count--;  
       }  
       i++;  
       j++;  
     }  
     return result;  
   }  
 };  

No comments: