📌  相关文章
📜  从两个排序数组中打印不常见元素的 Javascript 程序(1)

📅  最后修改于: 2023-12-03 15:21:55.331000             🧑  作者: Mango

从两个排序数组中打印不常见元素的 JavaScript 程序

这是一个用 JavaScript 实现的程序,可以用于从两个已排序的数组中打印出不常见元素。

问题描述

给定两个已排序的数组 arr1arr2,请编写一个程序,打印出在 arr1 中出现但不在 arr2 中出现,以及在 arr2 中出现但不在 arr1 中出现的元素。

解决方案

我们可以使用双指针的方法,分别从两个数组的开头开始遍历,在比较元素大小的同时移动指针,以找出不常见的元素。

具体来说,我们可以设定两个计数器 ij,分别表示在 arr1arr2 中当前待比较的元素的下标,然后进行如下操作:

  1. 如果 arr1[i] 等于 arr2[j],表明这个元素在两个数组中都有出现,那么我们就同时将两个指针后移一位。
  2. 如果 arr1[i] 小于 arr2[j],说明 arr1[i] 是一个不常见元素,所以我们就打印出 arr1[i],并将 i 后移一位。
  3. 如果 arr1[i] 大于 arr2[j],那么同理,arr2[j] 就是一个不常见元素,所以我们打印出 arr2[j],并将 j 后移一位。

当完成上述操作后,如果有一个指针已经到达数组的尾部,那么我们就停止比较,并打印出剩余数组中的所有元素。

根据上述思路,我们可以编写如下的 JavaScript 程序:

function printUncommonElements(arr1, arr2) {
  let i = 0, j = 0;

  while (i < arr1.length && j < arr2.length) {
    if (arr1[i] === arr2[j]) {
      i++;
      j++;
    } else if (arr1[i] < arr2[j]) {
      console.log(arr1[i]);
      i++;
    } else {
      console.log(arr2[j]);
      j++;
    }
  }

  while (i < arr1.length) {
    console.log(arr1[i]);
    i++;
  }

  while (j < arr2.length) {
    console.log(arr2[j]);
    j++;
  }
}
使用示例
const arr1 = [1, 3, 4, 6, 7];
const arr2 = [1, 2, 4, 5, 9];

printUncommonElements(arr1, arr2);

上述代码将输出:

3
6
2
5
9