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

本文共 853 字,大约阅读时间需要 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://bnbsl.baihongyu.com/

你可能感兴趣的文章
【原创】纯干货,Spring-data-jpa详解,全方位介绍。
查看>>
马士兵hadoop2.7.3_hadoop集群搭建
查看>>
BOM
查看>>
ppt字体
查看>>
谷歌把整个互联网拉进黑名单 故障持续近40分钟
查看>>
FBI网络欺诈投诉中心:经济萧条期网络犯罪更汹涌
查看>>
眼球网站经济学之我见——货币的汇率问题,互联网营销
查看>>
程序员从初级到中级10个秘诀,徐汇区网站设计
查看>>
一起谈.NET技术,asp.net控件开发基础(20)
查看>>
一起谈.NET技术,NHibernate3剖析:Mapping篇之ConfORM实战(5):Component语义
查看>>
艾伟_转载:IIS URL Rewriting 和 ASP.NET routing(下)
查看>>
数组方法篇二
查看>>
面试之设计模式
查看>>
chapter 5:一个简单的规律问题。
查看>>
备份还原数据
查看>>
第一冲刺阶段组内评分
查看>>
线性代数——向量
查看>>
hibernate入门(1)_md
查看>>
Javascript疑问九:callback到底是什么,好抽象
查看>>
2017-2018-1 20155225 实验四 外设驱动程序设计
查看>>