螺旋矩阵
思路:
这题是一个模拟的题目。
可以观察出一些性质:每次需要换方向的时候都是到达了边界(长度和宽度的边界)。
不知道怎么转化为代码! 哭了
看看题解吧:真不会
看到一个太妙的方法了:
代码:
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {int left=0;//左边界int right=matrix[0].size()-1;//右边界int top=0;//上边界int down=matrix.size()-1;//下边界vector<int> ans;if(matrix.empty()) return ans; //若数组为空,直接返回答案while(1){for(int i=left;i<=right;i++)//向右移动直到最右{ans.push_back(matrix[top][i]);}if(++top>down) break;for(int i=top;i<=down;i++)//向下移动直到最下{ans.push_back(matrix[i][right]);}if(--right<left) break;for(int i=right;i>=left;i--)//向左移动直到最左{ans.push_back(matrix[down][i]);}if(--down<top) break;for(int i=down;i>=top;i--)//向上移动直到最上{ans.push_back(matrix[i][left]);}if(++left>right) break;}return ans;}
};