HOT100——下一个排列(JS实现)
原创
©著作权归作者所有:来自51CTO博客作者wb59770b05237ae的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
解题思路
解题代码
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。
- 学会引入第三方变量来辅助我们的思路。