题目:
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。...必须原地修改,只允许使用额外常数空间。
以下是一些例子,输入位于左侧列,其相应输出位于右侧列。...例如:4,5,2,6,3,1 → 4,5,3,1,2,6,其中6到2递减,则将2与3替换然后翻转6,2,1 -> 4,5,3,1,2,6
数组从后到前递增都为递增则整体翻转数组则得到最小组合
?...var nextPermutation = function (nums) {
let len = nums.length,
index = len - 2
// 特殊情况如果nums小于两个元素直接返回...if (index >= 0) {
let i = len - 1;
// 将递减片段的第一个元素替换到倒序遍历开始的递增片段中
while (i >= 0 && nums[index