在JavaScript中寻找数字数组中的缺失元素

我们需要编写一个JavaScript函数,该函数接受一个长度为n的数字数组。该数组包含从0到n的所有整数(包括0和n),但是仅缺少一个整数,它可以是任何数字,并且不对数组进行排序。我们函数的任务是找到丢失的数字,并在线性时间和恒定空间中将其返回。

由于数组包含从0到n的所有数字,但只有一个,因此我们可以简单地计算线性时间中数组所有元素的总和。

然后我们可以从可以在恒定的时间和空间中计算的前n个自然数的总和中减去它。两者之间的差异将是我们缺少的数字。

示例

以下是代码-

const arr = [3, 7, 8, 10, 11, 0, 2, 6, 1, 4, 5];
const findMissing = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val);
   const { length: num } = arr;
   const correctSum = (num * (num + 1)) / 2;
   return diff = correctSum - sum;
   return diff;
};
console.log(findMissing(arr));
输出结果

以下是控制台输出-

9

猜你喜欢