【问题标题】:Most efficient way of finding missing integer in array在数组中查找缺失整数的最有效方法
【发布时间】:2014-01-31 13:42:49
【问题描述】:

给定一个 1 到 100 的整数数组(随机插入),从数组中取出一个整数。找到缺失整数的最有效方法是什么?

【问题讨论】:

标签: algorithm


【解决方案1】:

如你所知,将所有整数相加:

(1+N)*N/2 = (1+100)*100/2 = 5050

现在减去数组中的总和 (S')。差异将是您寻找的一个缺失的数字(所以x = 5050 - S')。

时间复杂度为 O(N),无法更快解决,因为你肯定需要读取一次数组。

【讨论】:

  • 这可能不是最佳答案,考虑到 N 非常大,因此您可能会溢出。
  • 这是最优的,因为我们在这里讨论的是 1..100 范围。如果我们得到更大的数字,我们仍然可以使用它,但为基于数组的大整数实现我们自己的整数类。
【解决方案2】:

MZetko 已经回答了基本情况,但这里有 4 个其他解决方案,其中数组可以排序或未排序

https://github.com/KartikTalwar/Algorithms/blob/master/Arrays/Find%20only%201%20missing%20number%20from%20an%20array/Find1MissingElementFromArray.py

【讨论】:

  • 不仅仅是提供链接,it would be preferable 在这里包含答案的基本部分,并提供链接以供其他参考。如果您不能胜任这项任务,您应该考虑在问题上简单地leaving a comment 而不是发布答案。
  • 下次会记住这一点,但为了我的辩护,我在链接中写了答案
  • 请记住,帖子是长期存在的 - 不要只写新帖子以符合指南,还要编辑现有帖子(即这篇帖子)。
  • 当链接现在是 404 时更糟糕的是
猜你喜欢
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 2019-04-27
  • 2021-12-02
  • 2018-08-12
  • 1970-01-01
相关资源
最近更新 更多