javascript - 给定一组随机值,​​计算缺少哪些值以及其中有多少?

标签 javascript arrays

我一直在做一些 CodeSignal 项目,最近遇到了一个问题,它给你一个随机的数字数组,并要求你返回使数组连续所需的数字数量。

例如,如果给定一个数组 [3, 6, 8],您将需要 '4'、'5' 和 '7' 来使数组连续。所以输出应该是'3'。

我找到了一个有效的答案:

return Math.max.apply(Math, arr) - Math.min.apply(Math, arr) - 
arr.length + 1;

问题是我不确定为什么会这样。是否有一个数学概念可以解释为什么从最大值中减去数组的最小值和长度可以得出正确答案?

  • 所有数字都是整数
  • 未排序

最佳答案

假设数组只有整数并且数字已经排序,那么你可以这样做:

const arr = [1, 4, 6, 9];

let count = 0;
for(let i = arr[0]; i < arr[arr.length-1]; ++i) {
  if(!arr.includes(i)) {
    count++;
  }
}

// 5
console.log(count);

工作示例:http://jsbin.com/xuvikotoju/edit?html,js,console,output

是的,如果你有一个排序数组,你可以像你所做的那样应用一个公式,正如评论中提到的那样:

(max - min) - (array.length + 1) 你会得到相同的答案。 具有 O(1) 性能

关于javascript - 给定一组随机值,​​计算缺少哪些值以及其中有多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51777150/

相关文章:

javascript - 从复选框创建具有复杂变量的对象

c - 两个字符数组之间分配中的不兼容类型

c - 如何消除: [Warning] converting to `int' from `double'

javascript - Webpack:未捕获的 ReferenceError:未定义要求

javascript - Jquery比较两个表中的行

javascript - 使用属性存储值

ruby-on-rails - 如何改进用 `' ` 引用所有数组元素并返回包含所有这些引用和逗号分隔元素的字符串的代码?

arrays - ruby 数组循环总是成对

c - 将动态 3D 矩阵传递给函数

javascript - 从 android Activity 调用 javascript 函数