https://oj.leetcode.com/problems/spiral-matrix/
螺旋矩阵,逆着转,输出矩阵中的元素。
在纸上模仿,然后记左上角(l1,l2)右上角(l1,r2),左下角(p1,l2)右下角(p1,r2).
然后4个for循环从一个点到另一个点位置遍历。
while控制总的。
当在一次遍历中,没有要输出的点,说明遍历结束。
class Solution { public: vector<int> spiralOrder(vector<vector<int> > &matrix) { vector<int> ans; int row = matrix.size(); if(row == 0) return ans; if(row ==1) { for(int i = 0;i<matrix[0].size();i++) ans.push_back(matrix[0][i]); return ans; } int col = matrix[0].size(); int l1,l2,r2,p1; l1 = 0; l2 = 0; r2 = col - 1; p1 = row -1; while(1) { int i; if(l2>r2) break; for(i = l2; i <= r2; i++) ans.push_back(matrix[l1][i]); if(l1+1>p1) break; for(i = l1+1;i<= p1;i++) ans.push_back(matrix[i][r2]); if(r2-1<l2) break; for(i = r2-1;i>=l2;i--) ans.push_back(matrix[p1][i]); if(p1-1<l1+1) break; for(i = p1-1;i>=l1+1;i--) ans.push_back(matrix[i][l2]); l1++; l2++; r2--; p1--; } return ans; } };