博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 31. 下一个排列
阅读量:3904 次
发布时间:2019-05-23

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

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

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

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

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

1,2,31,3,2
3,2,11,2,3
1,1,51,5,1

看了网上的题解才懂得。。。现在再来梳理一下。。。

(1)找出nums[i]<nums[i-1]的情况。。。即找出第一个不符合降序排序的情况。。。

(2)从末尾元素开始查询,找满足第一个比nums[i]大的最小元素nums[j]。。。因为i后面都是降序排列的,所以直接从后面遍历即可。。。

(3)交换nums[j]与nums[i],并将i+1后面的元素进行反转。。。。

(4)若原序列符合降序排序的情况,则直接反转序列。。。

代码如下:

 

class Solution {public:    void nextPermutation(vector
& nums) { int Size=nums.size(); if(Size==1) return; for (int i=Size-2,j=Size-1;i>=0;i--,j--) { if(nums[i]
=nums[k]) k--; swap(nums[i],nums[k]); reverse (nums.begin()+j,nums.end()); return; } } sort(nums.begin(),nums.end()); }};

 

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

你可能感兴趣的文章
小米笔记本安装Win 10历程
查看>>
【转】SLAM 论文阅读和分类整理
查看>>
【转】Ubuntu 16.04 重置密码(忘记密码)
查看>>
【转】信息奥赛一本通1185:单词排序(OJ题目描述有问题)
查看>>
【转】在EXCEL表格中如何用厘米毫米来设置行高列宽?
查看>>
开源spider
查看>>
HttpUnit: 一种在 WebSphere Studio 中测试 Web 应用程序的改进方式
查看>>
Python Self
查看>>
webclient
查看>>
从百度MP3搜索结果中提取歌曲列表
查看>>
python模块之HTMLParser
查看>>
模拟IE(FireFox)的Spider技术介绍
查看>>
去除文本中的空行的bash命令
查看>>
Sift Applcation
查看>>
我网易的blog
查看>>
linux下启动mysql
查看>>
进入mysql命令行管理模式
查看>>
Writing MySQL Scripts with Python DB-API
查看>>
What To Do If mysql Cannot Be Found
查看>>
浅谈ASP.NET的Postback
查看>>