数组篇增加部分C++代码

This commit is contained in:
Morisummer
2021-07-15 23:14:17 +08:00
parent 2c4afffbd3
commit 2d926ff3cb
5 changed files with 208 additions and 3 deletions

View File

@@ -140,6 +140,42 @@ class Solution:
return arr
```
C++ Code:
```cpp
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector <int> arr;
int left = 0, right = matrix[0].size()-1;
int top = 0, down = matrix.size()-1;
while (true) {
for (int i = left; i <= right; ++i) {
arr.emplace_back(matrix[top][i]);
}
top++;
if (top > down) break;
for (int i = top; i <= down; ++i) {
arr.emplace_back(matrix[i][right]);
}
right--;
if (left > right) break;
for (int i = right; i >= left; --i) {
arr.emplace_back(matrix[down][i]);
}
down--;
if (top > down) break;
for (int i = down; i >= top; --i) {
arr.emplace_back(matrix[i][left]);
}
left++;
if (left > right) break;
}
return arr;
}
};
```
我们仅仅是将 54 反过来了往螺旋矩阵里面插值下面我们直接看代码吧,大家可以也可以对其改进大家可以思考一下如果修改能够让代码更简洁
Java Code:
@@ -226,3 +262,39 @@ class Solution:
return arr.tolist()
```
C++ Code:
```cpp
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector <vector <int>> arr(n, vector <int>(n));
int left = 0, right = n-1, top = 0, buttom = n - 1, num = 1, numsize = n * n;
while (true) {
for (int i = left; i <= right; ++i) {
arr[top][i] = num++;
}
top++;
if (num > numsize) break;
for (int i = top; i <= buttom; ++i) {
arr[i][right] = num++;
}
right--;
if (num > numsize) break;
for (int i = right; i >= left; --i) {
arr[buttom][i] = num++;
}
buttom--;
if (num > numsize) break;
for (int i = buttom; i >= top; --i) {
arr[i][left] = num++;
}
left++;
if (num > numsize) break;
}
return arr;
}
};
```