mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-05 23:21:38 +00:00
数组篇增加部分C++代码
This commit is contained in:
@@ -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;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user