题目描述
解题思路
解题代码
var nextPermutation = function(nums) { // 从又往左找到第一个降序的位置 let right = nums.length-1; let flag = false; while (right) { if (nums[right] > nums[right-1]) { right--; flag = true; break; } else { right--; } } if (!flag) { nums.sort((next,pre) => next - pre) } else { let sorted = nums.splice(right+1).sort((next,pre) => next - pre) let move; for (let i = 0; i < sorted.length;i++) { if (sorted[i] > nums[right]) { move = i; break; } } let temp = sorted[move]; sorted[move] = nums[right]; nums[right] = temp; sorted.sort((next,pre) => next - pre); nums.push(...sorted) } nums }; 复制代码
启示
- 学会使用sorted、splice、slice等常用API。
- 学会引入第三方变量来辅助我们的思路。