📌  相关文章
📜  用于从重复数组中查找丢失元素的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 14:56:19.318000             🧑  作者: Mango

用于从重复数组中查找丢失元素的 Javascript 程序

在编写Javascript程序时,我们可能需要在一个数组中查找丢失的元素。这个数组可能存在重复项,因此需要编写一个特殊的程序来查找丢失的元素。

下面是一个用于从重复数组中查找丢失元素的Javascript程序。

程序思路
  1. 将数组排序,排除重复项。
  2. 确定数组中的最小值和最大值。
  3. 根据最小值和最大值, 创建一个新数组。
  4. 在新数组中查找应该存在的元素,如果元素不存在,则认为是丢失的元素。
代码实现
function findMissingElements(arr) {
  // 1. 将数组排序,排除重复项。
  arr = arr.sort((a, b) => {
    return a - b;
  });
  let newArr = [];
  // 排除重复项
  for (let i = 0; i < arr.length - 1; i++) {
    if (arr[i] !== arr[i + 1]) {
      newArr.push(arr[i]);
    }
  }
  newArr.push(arr[arr.length - 1]);
  // 2. 确定数组中的最小值和最大值。
  let minNum = newArr[0];
  let maxNum = newArr[newArr.length - 1];
  // 3. 根据最小值和最大值, 创建一个新数组。
  let resArr = new Array(maxNum - minNum + 1);
  // 4. 在新数组中查找应该存在的元素,如果元素不存在,则认为是丢失的元素。
  for (let i = 0; i < resArr.length; i++) {
    resArr[i] = 0;
  }
  for (let i = 0; i < newArr.length; i++) {
    resArr[newArr[i] - minNum] = 1;
  }
  let res = [];
  for (let i = 0; i < resArr.length; i++) {
    if (resArr[i] === 0) {
      res.push(i + minNum);
    }
  }
  return res;
}
代码解析

该程序的实现使用了以下步骤:

  1. 首先对传入的数组进行排序,排除重复元素,得到一个新的数组newArr
  2. 确定newArr中的最小值和最大值,分别为minNummaxNum
  3. 根据minNummaxNum创建一个长度为maxNum - minNum + 1的新数组resArr
  4. 遍历newArr数组,在resArr对应位置上将元素置为1。如果resArr对应位置上为0,则说明该元素是丢失的元素。
使用示例
let arr = [3,5,2,5,2];
let res = findMissingElements(arr);
console.log(res); // [4]

上述示例中,传入的数组为[3, 5, 2, 5, 2],其中重复的元素有25。程序会先排除重复元素,得到新数组[2, 3, 5],最小值为2,最大值为5。根据最小值和最大值创建一个长度为4的新数组[0,0,0,0]。遍历newArr数组,在resArr对应位置上将元素置为1,得到[1,1,0,1]。最后返回在resArr中为0的元素对应的值,即结果为[4]