leetcode hot100刷题日记——10.螺旋矩阵
解答:
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> ans;if(matrix.empty())return ans;int u=0;//赋值上下左右边界int d=matrix.size()-1;int l=0;int r=matrix[0].size()-1;while(true){for(int i=l;i<=r;i++){ans.push_back(matrix[u][i]);//向右移动直到最右}if(++u>d){//重新设置上边界,若上边界大于下边界,则遍历完成break;}for(int i=u;i<=d;i++){ans.push_back(matrix[i][r]);//向下走}if(--r<l){break;}for(int i=r;i>=l;i--){ans.push_back(matrix[d][i]);//向左}if(--d<u){break;}for(int i=d;i>=u;i--){ans.push_back(matrix[i][l]);//向上}if(++l>r){break;}}return ans;}
};
时间复杂度:O(MN)
空间复杂度:O(MN)
注意:在代码中更新上下左右边界的时候要先++再比较
++l和l++的区别应该都还记得吧……