题目要求实现所给 list 的下一个字典序,也就是说,给出比当前数字大的最小数字,以 [1,2,3] 为例,比 123 大的数字的最小值为 132 。
例子 [1,4,5,5,7,6,4,2] 结果:[1,4,5,6,2,4,5,7]
想要实现,我们首先需要倒数找到第一个数字满足 nums[i] < nums[i+1],这样的话 nums[0] 到 nums[i-1]是不需要改变的,没想明白的可以拿笔画一画,其实想明白这里后面就简单了。
这里 i = 3。
然后,在 i 之后的位置中找到比 nums[i] 大的最小数字,将其与 nums[i] 交换,确定了 i 位置。
这里 应该将 nums[3] 和 nums [5] 交换,list 变为 [1,4,5,6,7,5,4,2]
最后,把 i 位置之后的数字正序排序
这里 将 7,5,4,2 变为 2,4,5,7
得到