【发布时间】:2023-04-06 06:26:01
【问题描述】:
例如:如果 N = 8729,则编号为 829、879、879。最小编号为 829。
蛮力是通过删除连续对的低位数字来找到所有数字中的最小值。时间复杂度为 O(n)。有没有更好的方法来思考这个问题?
【问题讨论】:
-
我不想改变你的问题的意图,但听起来你想将你的标题改写为“给定一个数字 N,找到通过替换生成的数字集中的最小数字N 中的任意两个连续数字,两者中的较高者"。
-
通过删除与较大数字相邻的任何数字将形成等效集合。我认为这样考虑更容易,因为您无需查看每一对连续数字,而是查看一个数字并将其与一个或两个相邻数字进行比较。这样您就可以按顺序进行并跳过重复项(例如 879 879)。
-
你如何处理相等的连续数字?对于
889,生成集是[88, 89]还是只是[89]?