leetcode日记(42)螺旋矩阵
我使用的是递归,每次递归遍历一圈矩阵,将遍历结果塞进结果vector中,每次遍历修改上下左右边界,直至遍历后其中两边界重合或交错。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int m=matrix.size();
int n=matrix[0].size();
vector<int> result;
Order(result,matrix,m-1,n-1,0,0);
return result;
}
void Order(vector<int> &result,vector<vector<int>> matrix,int m,int n,int mm,int nn){
if(mm==nn&&m==n&&mm==m) {result.push_back(matrix[mm][nn]);return ;}
if(mm==m) {for(int i=nn;i<=n;i++) result.push_back(matrix[mm][i]);return ;}
if(nn==n) {for(int i=mm;i<=m;i++) result.push_back(matrix[i][n]);return ;}
for(int i=nn;i<n;i++) result.push_back(matrix[mm][i]);
for(int i=mm;i<m;i++) result.push_back(matrix[i][n]);
for(int i=n;i>nn;i--) result.push_back(matrix[m][i]);
for(int i=m;i>mm;i--) result.push_back(matrix[i][nn]);
if(mm==m-1||nn==n-1) return ;
if(m>mm&&n>nn) Order(result,matrix,m-1,n-1,mm+1,nn+1);
}
};
原文地址:https://blog.csdn.net/s478527548/article/details/140504802
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!