【发布时间】:2012-01-17 06:45:30
【问题描述】:
问题:给定一个排序数组 A 找出所有可能的元素与 A 的差异。
我的解决方案:
for (int i=0; i<n-1; ++i) {
for (int j=i+1; j<n; ++j) {
System.out.println(Math.abs(ai-aj));
}
}
当然,它是 O(n^2),但我一点也不多算。我在网上查了一下,发现了这个:http://www.careercup.com/question?id=9111881。它说你不能做得更好,但在一次采访中我被告知你可以做到 O(n)。哪个是对的?
【问题讨论】:
-
我对在这家公司工作会很谨慎...他们可能希望您在 P 时间内解决 NP 完全问题... ;-)
-
我的猜测是你或面试官忽略或无意中听到了一个额外的条件。
-
将 n 定义为差异的数量(输出的大小而不是输入的大小)。嘿 presto - 现在是 O(n)。
-
对于 sorted 数组,如果前一个元素等于当前 == 重复,则查找重复元素很简单。也许这个问题没有正确提出?
-
@bestsss 这个问题与寻找重复无关。