Commit fcadf7b
committed
31. Next Permutation
```Solution.c void reverse(int* nums, int l, int r) { while (l < r) { int temp = nums[l]; nums[l++] = nums[r]; nums[r--] = temp; } } void nextPermutation(int* nums, int numsSize) { int i = numsSize - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { int j = numsSize - 1; while (nums[j] <= nums[i]) j--; int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } reverse(nums, i + 1, numsSize - 1); } ``` ```Solution.cpp class Solution { public: void nextPermutation(vector<int>& nums) { int n = nums.size(), i = n - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { int j = n - 1; while (nums[j] <= nums[i]) j--; swap(nums[i], nums[j]); } reverse(nums.begin() + i + 1, nums.end()); } }; ``` ```Solution.cs public class Solution { public void NextPermutation(int[] nums) { int n = nums.Length, i = n - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { int j = n - 1; while (nums[j] <= nums[i]) j--; (nums[i], nums[j]) = (nums[j], nums[i]); } Array.Reverse(nums, i + 1, n - i - 1); } } ``` ```Solution.dart class Solution { void nextPermutation(List<int> nums) { int i = nums.length - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { int j = nums.length - 1; while (nums[j] <= nums[i]) j--; int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } int l = i + 1, r = nums.length - 1; while (l < r) { int temp = nums[l]; nums[l] = nums[r]; nums[r] = temp; l++; r--; } } } ``` ```Solution.go func nextPermutation(nums []int) { i := len(nums) - 2 for i >= 0 && nums[i] >= nums[i+1] { i-- } if i >= 0 { j := len(nums) - 1 for nums[j] <= nums[i] { j-- } nums[i], nums[j] = nums[j], nums[i] } reverse(nums[i+1:]) } func reverse(nums []int) { l, r := 0, len(nums)-1 for l < r { nums[l], nums[r] = nums[r], nums[l] l++ r-- } } ``` ```Solution.java class Solution { public void nextPermutation(int[] nums) { int n = nums.length, i = n - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { int j = n - 1; while (nums[j] <= nums[i]) j--; int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } reverse(nums, i + 1, n - 1); } private void reverse(int[] nums, int l, int r) { while (l < r) { int temp = nums[l]; nums[l++] = nums[r]; nums[r--] = temp; } } } ``` ```Solution.js /** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var nextPermutation = function(nums) { let i = nums.length - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { let j = nums.length - 1; while (nums[j] <= nums[i]) j--; [nums[i], nums[j]] = [nums[j], nums[i]]; } let left = i + 1, right = nums.length - 1; while (left < right) { [nums[left], nums[right]] = [nums[right], nums[left]]; left++; right--; } }; ``` ```Solution.kt class Solution { fun nextPermutation(nums: IntArray): Unit { var i = nums.size - 2 while (i >= 0 && nums[i] >= nums[i + 1]) i-- if (i >= 0) { var j = nums.size - 1 while (nums[j] <= nums[i]) j-- nums[i] = nums[j].also { nums[j] = nums[i] } } nums.reverse(i + 1, nums.size) } private fun IntArray.reverse(l: Int, r: Int) { var left = l var right = r - 1 while (left < right) { this[left] = this[right].also { this[right] = this[left] } left++; right-- } } } ``` ```Solution.php class Solution { /** * @param Integer[] $nums * @return NULL */ function nextPermutation(&$nums) { $n = count($nums); $i = $n - 2; while ($i >= 0 && $nums[$i] >= $nums[$i + 1]) $i--; if ($i >= 0) { $j = $n - 1; while ($nums[$j] <= $nums[$i]) $j--; [$nums[$i], $nums[$j]] = [$nums[$j], $nums[$i]]; } $l = $i + 1; $r = $n - 1; while ($l < $r) { [$nums[$l], $nums[$r]] = [$nums[$r], $nums[$l]]; $l++; $r--; } } } ``` ```Solution.py class Solution: def nextPermutation(self, nums: List[int]) -> None: i = len(nums) - 2 while i >= 0 and nums[i] >= nums[i + 1]: i -= 1 if i >= 0: j = len(nums) - 1 while nums[j] <= nums[i]: j -= 1 nums[i], nums[j] = nums[j], nums[i] nums[i + 1:] = reversed(nums[i + 1:]) ``` ```Solution.rb # @param {Integer[]} nums # @return {Void} Do not return anything, modify nums in-place instead. def next_permutation(nums) i = nums.length - 2 i -= 1 while i >= 0 && nums[i] >= nums[i + 1] if i >= 0 j = nums.length - 1 j -= 1 while nums[j] <= nums[i] nums[i], nums[j] = nums[j], nums[i] end nums[i+1..-1] = nums[i+1..-1].reverse end ``` ```Solution.rs impl Solution { pub fn next_permutation(nums: &mut Vec<i32>) { let n = nums.len(); let mut i = n as i32 - 2; while i >= 0 && nums[i as usize] >= nums[(i + 1) as usize] { i -= 1; } if i >= 0 { let mut j = n as i32 - 1; while nums[j as usize] <= nums[i as usize] { j -= 1; } nums.swap(i as usize, j as usize); } nums[(i + 1) as usize..].reverse(); } } ``` ```Solution.scala object Solution { def nextPermutation(nums: Array[Int]): Unit = { var i = nums.length - 2 while (i >= 0 && nums(i) >= nums(i + 1)) i -= 1 if (i >= 0) { var j = nums.length - 1 while (nums(j) <= nums(i)) j -= 1 val temp = nums(i); nums(i) = nums(j); nums(j) = temp } reverse(nums, i + 1, nums.length - 1) } private def reverse(nums: Array[Int], l: Int, r: Int): Unit = { var left = l; var right = r while (left < right) { val temp = nums(left); nums(left) = nums(right); nums(right) = temp left += 1; right -= 1 } } } ``` ```Solution.swift class Solution { func nextPermutation(_ nums: inout [Int]) { var i = nums.count - 2 while i >= 0 && nums[i] >= nums[i + 1] { i -= 1 } if i >= 0 { var j = nums.count - 1 while nums[j] <= nums[i] { j -= 1 } nums.swapAt(i, j) } nums[(i+1)...].reverse() } } ``` ```Solution.ts /** Do not return anything, modify nums in-place instead. */ function nextPermutation(nums: number[]): void { let i = nums.length - 2; while (i >= 0 && nums[i] >= nums[i + 1]) i--; if (i >= 0) { let j = nums.length - 1; while (nums[j] <= nums[i]) j--; [nums[i], nums[j]] = [nums[j], nums[i]]; } let l = i + 1, r = nums.length - 1; while (l < r) { [nums[l], nums[r]] = [nums[r], nums[l]]; l++; r--; } } ```1 parent 5a09225 commit fcadf7b
File tree
19 files changed
+281
-0
lines changed- sol/solution/0001-0100/0031
19 files changed
+281
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
Whitespace-only changes.
Whitespace-only changes.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
0 commit comments