题目:
解答:
使用四个变量记录left, right, top, bottom值,然后在之间遍历即可。
代码:
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.size() == 0 || matrix[0].size() == 0)
return {};
int row = matrix.size(), col = matrix[0].size();
vector<int> result(row * col);
int left = 0, right = col - 1, top = 0, bottom = row - 1;
int index = 0;
while(true){
for(int i = left;i <= right; ++i)
result[index++] = matrix[top][i];
top = top + 1;
if(left > right) break;
for(int i = top;i <= bottom; ++i)
result[index++] = matrix[i][right];
right = right - 1;
if(top > bottom) break;
for(int i = right; i >= left; --i)
result[index++] = matrix[bottom][i];
bottom = bottom - 1;
if(left > right) break;
for(int i = bottom;i >= top; --i)
result[index++] = matrix[i][left];
left = left + 1;
if(top > bottom) break;
}
return result;
}
};
更新会同步在我的网站更新(https://zergzerg.cn/notes/webnotes/leetcode/index.html)