mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-04 16:12:47 +08:00
32 lines
478 B
Go
32 lines
478 B
Go
package leetcode
|
|
|
|
func nextPermutation(nums []int) {
|
|
i, j := 0, 0
|
|
for i = len(nums) - 2; i >= 0; i-- {
|
|
if nums[i] < nums[i+1] {
|
|
break
|
|
}
|
|
}
|
|
if i >= 0 {
|
|
for j = len(nums) - 1; j > i; j-- {
|
|
if nums[j] > nums[i] {
|
|
break
|
|
}
|
|
}
|
|
swap(&nums, i, j)
|
|
}
|
|
reverse(&nums, i+1, len(nums)-1)
|
|
}
|
|
|
|
func reverse(nums *[]int, i, j int) {
|
|
for i < j {
|
|
swap(nums, i, j)
|
|
i++
|
|
j--
|
|
}
|
|
}
|
|
|
|
func swap(nums *[]int, i, j int) {
|
|
(*nums)[i], (*nums)[j] = (*nums)[j], (*nums)[i]
|
|
}
|