给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int n = matrix[0].size();
int m = matrix.size();
if(m == 0)
return {};
int l = 0;
int r = n -1;
int t = 0;
int b = m - 1;
vector<int> ret;
while(true)
{
for(int i = l; i<=r; ++i)
ret.push_back(matrix[t][i]);
if(++t>b)
break;
for(int i = t ;i<=b; ++i)
ret.push_back(matrix[i][r]);
if(--r<l)
break;
for(int i = r; i>=l;--i)
ret.push_back(matrix[b][i]);
if(--b<t)
break;
for(int i = b; i>=t;--i)
ret.push_back(matrix[i][l]);
if(++l>r)
break;
}
return ret;
}