下一个最高数字

时间:2016-11-29 17:03:23

标签: math

重新排列数字simple_differencing = True中的数字时,下一个最高数字为1862

重新排列数字2168中的数字时,下一个最高数字为22405

查找下一个最高数字的算法是什么?

1 个答案:

答案 0 :(得分:1)

以下是执行您想要的算法的摘要。如果您需要更多详细信息,代码或算法正确性的证明,请向我们展示您目前所做的更多内容。

我们以1862为例。从最右边的数字向左扫描该数字的数字,直到找到左数字小于右数字的连续数字对。在这种情况下,这是18。我们将左侧数字称为“枢轴”位置(此处为1)。现在,您将重新排列从该轴开始的数字中的数字。将枢轴替换为右侧任何位置的下一个较大的数字(在这种情况下为2)。然后在该数字之后,将所有其他数字放在枢轴(或在这种情况下为186)中,按升序排列(168此处)。结果是您的回答2168

在您的其他示例22405中,您会向后扫描并停在05处。您将0替换为5,然后将其他数字0放在此后,按升序排列。因此,您将224单独留下,最后使用22450

如果在向后扫描中,您没有找到左侧数字小于右侧数字的任何连续数字对,那么这些数字就没有更大的数字。

有一个技巧可以加快数字的位置,但是我会把它留给你。