【发布时间】:2014-05-06 09:35:03
【问题描述】:
我遇到了以下问题,从那时起我就一直在想这个问题:
Alice 在黑板上写了N 连续的正整数。例如。 "99, 100, 101, 102"。 Bob 已经从每个数字中删除了所有数字,但只有一个,因此序列现在读取例如"9, 0, 0, 1"。请注意,他留下的数字对于每个整数都可以是不同的。
我们的任务是,以O(N log N) 时间复杂度,找到可能启动序列的最小数字。在上面的例子中,答案是99。对于长度为 7 的序列 "1, 4, 0, 5, 4, 1, 4" ,答案将是 1042。 (产生序列 1042、1043、1044、1045、1046、1047、1048)。
我可以显示大约1234567890*N 的上限,因此输出不能是无限大小。但是我什至找不到有效的O(N^2) 解决方案。
有什么想法吗?
【问题讨论】:
-
"我可以显示大约 1234567890*N 的上限" 你是什么意思?对于所有可能的输入,结果小于 1234567890*N?
-
哦,我明白了。我以为只剩下最后一个数字,但事实并非如此。
-
@AlmaDo 我认为 arbitrary 会是更好的术语。 Bob 是一个对手,他会删除他喜欢的任何数字,可能会使其变得特别困难
-
@AlmaDo 是的,完全正确。但是random这个词在数学中有一个非常具体的含义,在这里并不适用,这就是为什么我建议arbitrary
-
你能告诉我们这个问题的根源吗?你确定它可以在 O(N log N) 中解决吗?
标签: algorithm integer sequence