Skip to content

Commit ee18f27

Browse files
authored
feat: add cpp solution to lc problem: No.0031 (doocs#783)
No.0031.Next Permutation
1 parent 3aab5bb commit ee18f27

File tree

3 files changed

+69
-22
lines changed

3 files changed

+69
-22
lines changed

solution/0000-0099/0031.Next Permutation/README.md

+26-4
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,32 @@
7878

7979
```
8080

81-
### **...**
82-
83-
```
84-
81+
### **C++**
82+
83+
```cpp
84+
class Solution {
85+
public:
86+
void nextPermutation(vector<int>& nums) {
87+
int i, j;
88+
int n = nums.size();
89+
for (i = n - 2; i >= 0; i--) {
90+
if (nums[i] < nums[i + 1]) {
91+
break;
92+
}
93+
}
94+
if (i < 0)
95+
reverse(nums.begin(), nums.end());
96+
else {
97+
for (j = n - 1; j >= 0; j--) {
98+
if (nums[i] < nums[j]) {
99+
break;
100+
}
101+
}
102+
swap(nums[i], nums[j]);
103+
reverse(nums.begin() + i + 1, nums.end());
104+
}
105+
}
106+
};
85107
```
86108
87109
<!-- tabs:end -->

solution/0000-0099/0031.Next Permutation/README_EN.md

+26-4
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,32 @@
6868

6969
```
7070

71-
### **...**
72-
73-
```
74-
71+
### **C++**
72+
73+
```cpp
74+
class Solution {
75+
public:
76+
void nextPermutation(vector<int>& nums) {
77+
int i, j;
78+
int n = nums.size();
79+
for (i = n - 2; i >= 0; i--) {
80+
if (nums[i] < nums[i + 1]) {
81+
break;
82+
}
83+
}
84+
if (i < 0)
85+
reverse(nums.begin(), nums.end());
86+
else {
87+
for (j = n - 1; j >= 0; j--) {
88+
if (nums[i] < nums[j]) {
89+
break;
90+
}
91+
}
92+
swap(nums[i], nums[j]);
93+
reverse(nums.begin() + i + 1, nums.end());
94+
}
95+
}
96+
};
7597
```
7698
7799
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
class Solution {
22
public:
3-
void nextPermutation(vector<int> &nums) {
4-
int len = nums.size();
5-
6-
if (len == 0)return;
7-
int i,j;
8-
for(i = len - 2;i>=0;i--){
9-
if(nums[i+1] > nums[i]){
10-
for(j = len - 1;j>i;j--){
11-
if(nums[j]>nums[i])break;
12-
}
13-
swap(nums[i],nums[j]);
14-
reverse(nums.begin()+i+1,nums.end());
15-
return;
3+
void nextPermutation(vector<int>& nums) {
4+
int i, j;
5+
int n = nums.size();
6+
for (i = n - 2; i >= 0; i--) {
7+
if (nums[i] < nums[i + 1]) {
8+
break;
169
}
1710
}
18-
reverse(nums.begin(),nums.end());
11+
if (i < 0)
12+
reverse(nums.begin(), nums.end());
13+
else {
14+
for (j = n - 1; j >= 0; j--) {
15+
if (nums[i] < nums[j]) {
16+
break;
17+
}
18+
}
19+
swap(nums[i], nums[j]);
20+
reverse(nums.begin() + i + 1, nums.end());
21+
}
1922
}
2023
};

0 commit comments

Comments
 (0)