我实际上被问到了这个问题,尽管我得到了一些提示,但我也不知道 最后没有告诉我正确的解决方案,我仍然没有线索
如果能在 O(n) 时间内完成此任务,我将不胜感激 当然 O(nlogn) 很容易,但正如我所说,O(n) 时间就是我需要的
谢谢!
当然不允许使用哈希图/哈希集,这是我老实说不明白的最大事情 我的意思是没有他们这怎么可能? 数组顺序是随机的,如标题所述
面试官告诉我用 x 和 y 标记这 2 个数字...不知道该怎么办 也可能以某种方式使用总和?
您可以计算给定数字的总和和乘积,并将其与如果数组还包含两个缺失值 𝑥 和 𝑦 时的总和和乘积进行比较。
这给你两个方程:
其中𝑞是“预期”总和与实际总和之间的差,𝑝是预期乘积(阶乘)与实际乘积的商。
上式可以改写为:
该方程的两个解是 𝑥 和 𝑦 的值。
备注:阶乘变得非常快,所以如果我们考虑渐近复杂度,我们不能真正说这个解决方案是 O(𝑛),因为我们需要动态大整数来工作,这将使该算法中发生的乘法不会发生真正的 O(1)。