博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode31.下一个排列 JavaScript
阅读量:6868 次
发布时间:2019-06-26

本文共 849 字,大约阅读时间需要 2 分钟。

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。

如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。

必须原地修改,只允许使用额外常数空间。

以下是一些例子,输入位于左侧列,其相应输出位于右侧列。

1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1

答案参考:

/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var nextPermutation = function(nums) {    for(var i = nums.length - 1; i > 0 && nums[i] <= nums[i - 1]; i--);    if(i === 0){        reverse(0, nums.length - 1);        return;    }    for(var j = i + 1; j < nums.length && nums[i - 1] < nums[j]; j++);    swap(i - 1, j - 1);    reverse(i, nums.length - 1);    return;            function reverse(start, end){        while(start < end){            swap(start, end);            start++;            end--;        }    }    function swap(i, j){        var tmp = nums[i];        nums[i] = nums[j];        nums[j] = tmp;    }};

转载地址:http://trdfl.baihongyu.com/

你可能感兴趣的文章
编程珠玑:用后缀数组寻找最长重复字符串
查看>>
Java写到.txt文件,如何实现换行
查看>>
通过http proxy访问git 服务
查看>>
JavaScript之isNaN()函数讲解
查看>>
MPlayer源代码分析
查看>>
获取音视频文件AVMetadata数据
查看>>
sql serve 创建序列
查看>>
模型层的生成
查看>>
关于APP接口设计
查看>>
【VI】如何再执行上一个(历史)命令(已解决)
查看>>
KendoUI系列:DropDownList
查看>>
Axure7.0汉化方法
查看>>
我的MYSQL学习心得(九)
查看>>
JavaScript高级程序设计学习笔记--DOM
查看>>
shell变量注意事项
查看>>
BASH Shell 简易进度条小函数
查看>>
linux解压rar压缩文件
查看>>
[Android]Android端ORM框架——RapidORM(v2.0)
查看>>
使用Masstransit开发基于消息传递的分布式应用
查看>>
Windows下使用ffmpeg与java实现截取视频缩略图
查看>>