📅  最后修改于: 2023-12-03 15:21:55.331000             🧑  作者: Mango
这是一个用 JavaScript 实现的程序,可以用于从两个已排序的数组中打印出不常见元素。
给定两个已排序的数组 arr1
和 arr2
,请编写一个程序,打印出在 arr1
中出现但不在 arr2
中出现,以及在 arr2
中出现但不在 arr1
中出现的元素。
我们可以使用双指针的方法,分别从两个数组的开头开始遍历,在比较元素大小的同时移动指针,以找出不常见的元素。
具体来说,我们可以设定两个计数器 i
和 j
,分别表示在 arr1
和 arr2
中当前待比较的元素的下标,然后进行如下操作:
arr1[i]
等于 arr2[j]
,表明这个元素在两个数组中都有出现,那么我们就同时将两个指针后移一位。arr1[i]
小于 arr2[j]
,说明 arr1[i]
是一个不常见元素,所以我们就打印出 arr1[i]
,并将 i
后移一位。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