(nums: &mut Vec<i32>)
| 19 | } |
| 20 | |
| 21 | pub fn next_permutation(nums: &mut Vec<i32>) { |
| 22 | if nums.len() <= 1 { return } |
| 23 | let mut i = nums.len() - 2; |
| 24 | while let false = nums[i] < nums[i + 1] { |
| 25 | if i != 0 { |
| 26 | i -= 1 |
| 27 | } else { |
| 28 | nums.reverse(); |
| 29 | return |
| 30 | } |
| 31 | } |
| 32 | let mut j = nums.len() - 1; |
| 33 | while let false = nums[i] < nums[j] { |
| 34 | j -= 1; |
| 35 | } |
| 36 | nums.swap(i, j); |
| 37 | nums[i+1..].reverse() |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | #[cfg(test)] |