代码拉取完成,页面将自动刷新
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (matrix.empty())
return {};
int rStart = 0, rEnd = matrix.size();
int cStart = 0, cEnd = matrix[0].size();
vector<int> ans;
int state = 0;
int r = 0, c = 0;
while (rStart < rEnd && cStart < cEnd) {
switch(state) {
case 0:
for (c = cStart; c < cEnd; c++)
ans.push_back(matrix[r][c]);
rStart++;
c = cEnd - 1;
break;
case 1:
for (r = rStart; r < rEnd; r++)
ans.push_back(matrix[r][c]);
cEnd--;
r = rEnd - 1;
break;
case 2:
for (c = cEnd - 1; c >= cStart; c--)
ans.push_back(matrix[r][c]);
rEnd--;
c = cStart;
break;
case 3:
for (r = rEnd - 1; r >= rStart; r--)
ans.push_back(matrix[r][c]);
cStart++;
r = rStart;
break;
default:
break;
}
state++;
state %= 4;
}
return ans;
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。