找到小于n的最大数字

时间:2015-03-05 07:47:42

标签: algorithm math data-structures

给定数字n,找到小于n的最大数字。例如。 231输出将是213?

1 个答案:

答案 0 :(得分:4)

您需要找到右侧数字较小的最后一位数字,并将该数字与右侧最大的小数字交换。然后按降序对交换数字右侧的所有数字进行排序。

例如,给定74125,4是右边小数字的最后一个数字,2是较小数字中最大的数字,因此通过交换4和2得到72145找到答案,然后排序所有获得72541的2右边的数字。

附加说明:如果最小的数字到右侧数字有多个副本,则交换该数字的最左侧副本。例如,74122267在排序之前变为72142267,在排序之后变为72764221。