1 | class Solution { |
由于题目要求需按照下一个更大的排列,那么容易想到通过交换数组中的元素实现,容易想到的是从右侧像左侧搜索,如果能把更低位的较大值与较高位的较小值交换,那么就能构成更大的序列,如数组:[4, 9, 5, 3],容易想到的是将 4 与 9 交换得到:[9, 4, 5, 3],但是通过观察原数组易知,交换至左侧元素的值应大于左侧元素且应尽量接近左侧元素值,所以此时应该将 4 与 5 交换,以使得到的排列尽可能地接近原排列,交换后的数组为:[5, 9, 4, 3],此时左侧元素值已经变大,那么此时还应该让剩下的元素组成的数值尽可能地小,此时只需将剩下的元素倒序即可(倒序前右侧元素非严格单调递减)。