题目

使用一个while循环找到第一个nums[i]<nums[i+1]的数,如果i为-1的话说明为逆序,则正序后返回。再用一个while循环从后遍历找到第一个大于nums[i]的值,然后交换,之后排序i后面的数组。

    let len=nums.length;
    let i=len-2;
    while(i>=0&&nums[i]>=nums[i+1]){
        i--;
    }
    if(i>=0){
        let j=len-1;
        while(j>i&&nums[j]<=nums[i]){
            j--;
        }
        [nums[i],nums[j]]=[nums[j],nums[i]];
        let queen=nums.splice(i+1,len);
        queen.sort((x,y)=>x-y);
        nums.push.apply(nums,queen);
    }else{
        nums.sort((x,y)=>x-y);
    }
};