从所有数字 1-n 的数组中找到 2 个被删除的数字,数组顺序是随机的并且不允许使用哈希图

问题描述 投票:0回答:1

我实际上被问到了这个问题,尽管我得到了一些提示,但我也不知道 最后没有告诉我正确的解决方案,我仍然没有线索

如果能在 O(n) 时间内完成此任务,我将不胜感激 当然 O(nlogn) 很容易,但正如我所说,O(n) 时间就是我需要的

谢谢!

当然不允许使用哈希图/哈希集,这是我老实说不明白的最大事情 我的意思是没有他们这怎么可能? 数组顺序是随机的,如标题所述

面试官告诉我用 x 和 y 标记这 2 个数字...不知道该怎么办 也可能以某种方式使用总和?

algorithm time-complexity
1个回答
0
投票

您可以计算给定数字的总和和乘积,并将其与如果数组还包含两个缺失值 𝑥 和 𝑦 时的总和和乘积进行比较。

这给你两个方程:

  • 𝑥 + 𝑦 = 𝑞
  • 𝑥𝑦 = 𝑝

其中𝑞是“预期”总和与实际总和之间的差,𝑝是预期乘积(阶乘)与实际乘积的商。

上式可以改写为:

  • 𝑥² − 𝑞𝑥 + 𝑝 = 0

该方程的两个解是 𝑥 和 𝑦 的值。

备注:阶乘变得非常快,所以如果我们考虑渐近复杂度,我们不能真正说这个解决方案是 O(𝑛),因为我们需要动态大整数来工作,这将使该算法中发生的乘法不会发生真正的 O(1)。

© www.soinside.com 2019 - 2024. All rights reserved.