diff --git a/solution/0000-0099/0031.Next Permutation/README.md b/solution/0000-0099/0031.Next Permutation/README.md index e1d7bb0c9cc22..a1f808a6ea7af 100644 --- a/solution/0000-0099/0031.Next Permutation/README.md +++ b/solution/0000-0099/0031.Next Permutation/README.md @@ -78,10 +78,32 @@ ``` -### **...** - -``` - +### **C++** + +```cpp +class Solution { +public: + void nextPermutation(vector& nums) { + int i, j; + int n = nums.size(); + for (i = n - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) { + break; + } + } + if (i < 0) + reverse(nums.begin(), nums.end()); + else { + for (j = n - 1; j >= 0; j--) { + if (nums[i] < nums[j]) { + break; + } + } + swap(nums[i], nums[j]); + reverse(nums.begin() + i + 1, nums.end()); + } + } +}; ``` diff --git a/solution/0000-0099/0031.Next Permutation/README_EN.md b/solution/0000-0099/0031.Next Permutation/README_EN.md index 0ccd4611fde20..857767ac78786 100644 --- a/solution/0000-0099/0031.Next Permutation/README_EN.md +++ b/solution/0000-0099/0031.Next Permutation/README_EN.md @@ -68,10 +68,32 @@ ``` -### **...** - -``` - +### **C++** + +```cpp +class Solution { +public: + void nextPermutation(vector& nums) { + int i, j; + int n = nums.size(); + for (i = n - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) { + break; + } + } + if (i < 0) + reverse(nums.begin(), nums.end()); + else { + for (j = n - 1; j >= 0; j--) { + if (nums[i] < nums[j]) { + break; + } + } + swap(nums[i], nums[j]); + reverse(nums.begin() + i + 1, nums.end()); + } + } +}; ``` diff --git a/solution/0000-0099/0031.Next Permutation/Solution.cpp b/solution/0000-0099/0031.Next Permutation/Solution.cpp index 72ee758652311..5385d4333668c 100644 --- a/solution/0000-0099/0031.Next Permutation/Solution.cpp +++ b/solution/0000-0099/0031.Next Permutation/Solution.cpp @@ -1,20 +1,23 @@ class Solution { public: - void nextPermutation(vector &nums) { - int len = nums.size(); - - if (len == 0)return; - int i,j; - for(i = len - 2;i>=0;i--){ - if(nums[i+1] > nums[i]){ - for(j = len - 1;j>i;j--){ - if(nums[j]>nums[i])break; - } - swap(nums[i],nums[j]); - reverse(nums.begin()+i+1,nums.end()); - return; + void nextPermutation(vector& nums) { + int i, j; + int n = nums.size(); + for (i = n - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) { + break; } } - reverse(nums.begin(),nums.end()); + if (i < 0) + reverse(nums.begin(), nums.end()); + else { + for (j = n - 1; j >= 0; j--) { + if (nums[i] < nums[j]) { + break; + } + } + swap(nums[i], nums[j]); + reverse(nums.begin() + i + 1, nums.end()); + } } };