Spiral Matrix (Medium)
Description
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
Analysis
直接模拟。。
My Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Solution { vector<int> ans; public: vector<int> spiralOrder(vector<vector<int> > &matrix) { int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; int m = matrix.size(); if(m == 0) return ans; int n = matrix[0].size(); if(n == 0) return ans; int u = 0 ,d = m - 1 , l = 0, r = n - 1; int x = 0 , y = 0 , num = m*n , dir = 0; while(num){ if(x>=u&&y>=l&&x<=d&&y<=r){ ans.push_back(matrix[x][y]); num--; x+=dx[dir]; y+=dy[dir]; } else{ x-=dx[dir]; y-=dy[dir]; if(dir == 0) u++; else if(dir == 1) r--; else if(dir == 2) d--; else l++; dir = (dir+1)%4; x+=dx[dir]; y+=dy[dir]; } } return ans; } };
|