给定一个顺序的数 一般是 逆序最大 顺序最小。
比如 给定一个12354 我们找到离它最近的换位数。为了更接近原数,我们需要保持高位不变,低位在最小范围内变换顺序。 那么究竟需要变换多少位呢? 这取决于当前数的逆序区域。
12354的逆序区域是最后两位,对于这两位来说,此时已经是最大的组合。所以我们要想最接近原数,又比原数大,就必须从倒数第三位开始改变。
比如此时 我们需要改变的是3。那么3和谁变换位置呢,我们需要从逆序中选择刚好大于3的数字和3进行交换。
这时倒数第三位已经确定,而前两位不变,最后两位仍然是逆序。这时我们需要把后两位转变回顺序,以此来保证在第三位是4确定的情况下后两位尽可能小。
总结后分为三个步骤:
1.从后向前查看逆序区域,找到逆序区域的前一位,也就是数字置换的边界。
2.把逆序区域的前一位和逆序区域中刚刚大于它的数字交换
3.把原来的逆序转变为顺序。
例题: