题解 | #顺时针打印矩阵#
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D13%26type%3D265&difficulty=&judgeStatus=3&tags=&title=&gioEnter=menu
螺旋矩阵
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
if (matrix.empty()) {
return std::vector<int>();
}
std::vector<int> res;
int left = 0, right = matrix[0].size() - 1, up = 0, down = matrix.size() - 1;
while (left <= right && up <= down) {
for (int i = left; i <= right; ++i) {
res.push_back(matrix[up][i]);
}
++up;
if (up > down) {
break;
}
for (int i = up; i <= down; ++i) {
res.push_back(matrix[i][right]);
}
--right;
if (left > right) {
break;
}
for (int i = right; i >= left; --i) {
res.push_back(matrix[down][i]);
}
--down;
if (up > down) {
break;
}
for (int i = down; i >= up; --i) {
res.push_back(matrix[i][left]);
}
++left;
if (left > right) {
break;
}
}
return res;
}
};