博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode31.下一个排列 JavaScript
阅读量:6837 次
发布时间: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://hwhkl.baihongyu.com/

你可能感兴趣的文章
Gradle构建脚本概要之构建块
查看>>
HashTable已经被淘汰了,不要在代码中再使用它
查看>>
ACCP学习旅程之----- 使用HTML语言开发商业站点(第一章 HTML的基本标签)
查看>>
AAD Connect 微软官方的描述准确吗?
查看>>
C++实现快速排序
查看>>
puppet 类、模块
查看>>
Rabbitmq安装
查看>>
2016年3月9日作业
查看>>
tomcat 部署站点时遇到的部分问题以及解决方案
查看>>
excel两个下拉框相互关联
查看>>
HttpURLConnection发送post请求信息
查看>>
mysql出现多线程操作同一个表的情况,应该怎么办?
查看>>
springmvc 将post转换为delete,put
查看>>
第二届清华大学项目管理精英训练营【敏捷个人】分享
查看>>
Centos 安装 Solr
查看>>
Android Toast自己定义Toast例子
查看>>
bash shell实现二进制与十进制数的互转
查看>>
精准测试
查看>>
Oracle11G_逻辑备份
查看>>
Linux正变得无处不在;应用大盘点
查看>>