一、题目
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。
如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
必须 原地 修改,只允许使用额外常数空间。
解析:
这里的下一个更大的排序,指的是将数组中的数字重排后的按照字典序第一个比原来的序列大的序列。
比如:
nums=[1,2,3]
,那么对应的排序组合有[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
这其中如果按照在字典序,下一个比它大的就是 [1,3,2]
(1)我们希望下一个数比当前数大,这样才满足下一个排列
的定义。需要将后面的 “大数” 与前面的 “小数” 交换,这样就可以得到一个更大的数。比如 123456,将 5 和 6 交换就能得到一个更大的数 123465。
&