重新排列数字simple_differencing = True
中的数字时,下一个最高数字为1862
重新排列数字2168
中的数字时,下一个最高数字为22405
查找下一个最高数字的算法是什么?
答案 0 :(得分:1)
以下是执行您想要的算法的摘要。如果您需要更多详细信息,代码或算法正确性的证明,请向我们展示您目前所做的更多内容。
我们以1862
为例。从最右边的数字向左扫描该数字的数字,直到找到左数字小于右数字的连续数字对。在这种情况下,这是18
。我们将左侧数字称为“枢轴”位置(此处为1
)。现在,您将重新排列从该轴开始的数字中的数字。将枢轴替换为右侧任何位置的下一个较大的数字(在这种情况下为2
)。然后在该数字之后,将所有其他数字放在枢轴(或在这种情况下为186
)中,按升序排列(168
此处)。结果是您的回答2168
。
在您的其他示例22405
中,您会向后扫描并停在05
处。您将0
替换为5
,然后将其他数字0
放在此后,按升序排列。因此,您将224
单独留下,最后使用22450
。
如果在向后扫描中,您没有找到左侧数字小于右侧数字的任何连续数字对,那么这些数字就没有更大的数字。
有一个技巧可以加快数字的位置,但是我会把它留给你。