algorithm - 将大小为 10000 的数组中的 2 个位置清零,并填充 1 到 10000 之间的整数。如何找出这些值是什么?

标签 algorithm

<分区>

Possible Duplicate:
Easy interview question got harder: given numbers 1..100, find the missing number(s)

如果您有一个大小为 10000 的数组,其中填充了 1 到 10000 之间的整数,没有重复,并且您将该数组中的两个位置设置为 0。您如何计算出这两个数字是什么?

例如: Array = {8,6,3,5,4,2,7,1};//为简单起见,用1到8的数字填充数组。

数组[0]=0; 数组[1]=0;

Array[0] 和 Array[1] 的位置是什么?

如果问题只有一个位置归零,问题就会很简单。您将从 1 到 8 的数字总和为 36,然后从将位置为零后数组中的所有数字相加时得到的总和中减去它。

这不是作业题。但我想我记得在大学时有人问过这个问题。

最佳答案

您可以使用常量内存和 1 个数组查找来解决您的问题:

  1. 你可以找到归零数字的总和 - 通过计算所有数字的总和减去剩余数字的总和
  2. 您可以用类似的方法求出归零数字的平方和(只注意选择可以容纳足够大值的数字类型)。

现在您有了包含 2 个变量(x+y==sum1 和 x*x+y*y == sum2)的 2 个方程组,可以轻松求解。

关于algorithm - 将大小为 10000 的数组中的 2 个位置清零,并填充 1 到 10000 之间的整数。如何找出这些值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526061/

相关文章:

c - 如何用双指针释放C中的树结构

algorithm - 长波紫外线 - 1394 : And There Was One Algorithm

c - 回文校验的递归方法

algorithm - 查找文件中的前 n 个数字

algorithm - 统一整数除法器

algorithm - 回归中的截距和系数

algorithm - 为什么这个修剪是由我的程序完成的?

php - 具有意外输出的其他循环

python - 一维数组或列表的隔离森林 Sklearn 以及如何调整超参数

java - 修改队列内容后如何从优先级队列中获取最小元素