我想用c
时间: 2024-02-22 14:56:44 浏览: 13
跟我学c语言
4星 · 用户满意度95%
好的,以下是使用 C++ 实现按照顺时针顺序遍历二维数组的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
if (matrix.empty() || matrix[0].empty()) {
return res;
}
int m = matrix.size(), n = matrix[0].size();
int r1 = 0, r2 = m - 1, c1 = 0, c2 = n - 1;
while (r1 <= r2 && c1 <= c2) {
// Traverse upper edge
for (int c = c1; c <= c2; ++c) {
res.push_back(matrix[r1][c]);
}
// Traverse right edge
for (int r = r1 + 1; r <= r2; ++r) {
res.push_back(matrix[r][c2]);
}
// Traverse bottom edge
if (r1 < r2 && c1 < c2) {
for (int c = c2 - 1; c > c1; --c) {
res.push_back(matrix[r2][c]);
}
// Traverse left edge
for (int r = r2; r > r1; --r) {
res.push_back(matrix[r][c1]);
}
}
++r1;
--r2;
++c1;
--c2;
}
return res;
}
int main() {
vector<vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
vector<int> res = spiralOrder(matrix);
for (int i = 0; i < res.size(); ++i) {
cout << res[i] << " ";
}
cout << endl;
return 0;
}
```
以上代码的时间复杂度和空间复杂度与前面提到的 Python 代码相同。如果有任何疑问,请随时询问。
阅读全文