Spiral Matrix leetcode

来源:互联网 发布:t型匹配网络 ads 编辑:程序博客网 时间:2024/06/07 07:41
Spiral Matrix
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]
如上图所示,本题要求由外向内回折读取matrix

You should return [1,2,3,6,9,8,7,4,5].

本题思路是读取一个,删除一个,用了vector的erase函数,删除路径同读取路径相同,分别需要在四角处更新路径方向

AC代码:

</pre><pre name="code" class="cpp">public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> res;if(!matrix.empty()){int m=matrix.size();int n=matrix[0].size();int i=0,j=0;while(!matrix.empty()){res.push_back(matrix[i][j]);if(matrix[i].size()>1)matrix[i].erase(matrix[i].begin()+j);elsematrix.erase(matrix.begin()+i);//此处需要注意,二维数组只有一个元素的时候 需要这样删除if(i==0&&j==0&&matrix.size()==m-1)//第一行去除{j=n-1;m--;}else if(i<m-1&&j==n-1)i++;else if(matrix.size()&&matrix[0].size()==n-1&&j==n-1)//最后一列去除{n--;j=n-1;}else if(i==m-1&&j>0)j--;else if(i==m-1&&j==0&&m>1&&matrix.size()==m-1)//最后一行去除{m--;i=m-1;}else if(i>0&&j==0){i--;}else if(i==0&&j==0&&matrix[0].size()==n-1){//第一列去除if(matrix.size()>1&&matrix[1].size()==n-1)n--;}}}return res;}};


1 0
原创粉丝点击