题目描述
解题思路
解题代码
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。
- 学会引入第三方变量来辅助我们的思路。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END