是否可以使用不需要暴力破解的代码找到此序列中的第 n 个数字?



有人问我这个问题,要求我在序列中找到第N个数字。顺序如下555 35 1315 11131115 31133115 1321232115。

序列是字符串中每个字符的计数。假设我从555开始,那么由于"5"出现了三次,下一个数字将是35。类似地,由于我有一次出现3,一次出现5,下一个数字将是1315。

现在,有人问我这个问题,在输入为任意随机数的情况下,我必须从哪里得到这样的序列的第n个数。我已经建议了一种brueforce方法,或者如果有一组固定的数字,那么我们可以缓存结果。我想知道是否有更好的编码方法?或者,对于这样的问题陈述,是否有任何现有的算法?

序列中数字的长度呈指数增长(除非以22开头(。根据维基百科的数据,每个数字都比上一个长大约30%。

由于这种指数增长,迭代生成(蛮力(和输出第n个数字所需的时间是O(长度(输入(+长度(输出((,除了22,你不能得到比这更低的复杂度。

也许面试官对你具体的暴力实施有问题。

如果你被问到第N个数字的前10位,或者类似的数字,那么会有一个更有趣的答案。。。但我认为这对面试来说太难了。

相关内容

最新更新