我需要找一个幸运数字"它包含相同数量的4和7位数(例如4747,4477等)。给定输入n,我需要找到最小的"幸运数字"它比大于,但最接近n(例如,如果输入是6060,那么答案将是7447)。解决这个问题的最佳算法是什么?假设输入将是< = 10 ^ 100000。我想把它分成字符,并在逻辑上解决它们,但有些情况下找出答案并不容易。谁能告诉我如何解决这个问题?
答案 0 :(得分:1)
以下算法具有最差情况线性时间,这是最佳的。
但是,这有点复杂;它涉及大量扫描,然后是另一种方式,然后是第一种方式。可能有一种更简单的算法也是最优的。 (一个现实的实现会增加一些小的优化来改善平均情况,和/或通过一个常数因子改善最坏情况的性能。)