LeetCode 54. Spiral Matrix
循环输出矩阵元素,中等难度题目,查数要认真。
Solution1:我的答案
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (!matrix.size() || !matrix[0].size()) return {};
int m = matrix.size(), n = matrix[0].size();
vector<int> res;
int row_lower = 0, row_upper = m - 1, col_lower = 0, col_upper = n - 1, index = 0;
while (row_lower <= row_upper && col_lower <= col_upper) {
if (row_lower == row_upper) { //只剩下一行
for (int i = index; i < n - index; i++)
res.push_back(matrix[row_lower][i]);
break;
} else if (col_lower == col_upper) { //只剩下一列
for (int i = index; i < m - index; i++)
res.push_back(matrix[i][col_upper]);
break;
}
else {//四个for循环做遍历读入数据
for (int i = index; i < n - 1 - index; i++)
res.push_back(matrix[row_lower][i]);
for (int i = index; i < m - 1 - index; i++)
res.push_back(matrix[i][col_upper]);
for (int i = n - 1 - index; i > index; i--)
res.push_back(matrix[row_upper][i]);
for (int i = m - 1 - index; i > index; i--)
res.push_back(matrix[i][col_lower]);
}
index++;
row_lower++;row_upper--;
col_lower++;col_upper--;
}
return res;
}
};