JS-给定A、B两个数组,同时存在于A、B两个数组中的项称为“交集”; 只在A数组中,且不在B数组中的项称为“差集” 编写函数intersection(arr1,arr2)返回两个数组的交集数组 编写函数difference(arr1,arr2)返回两个数组的差集数组
时间: 2023-05-27 17:02:03 浏览: 58
function intersection(arr1, arr2) {
let result = [];
for (let i = 0; i < arr1.length; i++) {
if (arr2.includes(arr1[i])) {
result.push(arr1[i]);
}
}
return result;
}
function difference(arr1, arr2) {
let result = [];
for (let i = 0; i < arr1.length; i++) {
if (!arr2.includes(arr1[i])) {
result.push(arr1[i]);
}
}
return result;
}
// 示例
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [3, 4, 5, 6, 7];
console.log(intersection(arr1, arr2)); // [3, 4, 5]
console.log(difference(arr1, arr2)); // [1, 2]
相关问题
给定两个升序数组A,B,将这两个数组合并为一个升序数组。c语言
可以使用双指针算法来实现两个升序数组的合并。
具体实现如下:
```c
void merge(int* A, int ASize, int* B, int BSize, int* C) {
int i = 0, j = 0, k = 0;
while (i < ASize && j < BSize) {
if (A[i] <= B[j]) {
C[k++] = A[i++];
} else {
C[k++] = B[j++];
}
}
while (i < ASize) {
C[k++] = A[i++];
}
while (j < BSize) {
C[k++] = B[j++];
}
}
```
其中,A、B为待合并的两个升序数组,ASize、BSize分别为其长度,C为合并后的升序数组,需要提前分配好足够的空间。
双指针算法的思路是,分别维护两个指针i、j,表示当前需要比较的元素在A、B数组中的位置,然后比较A[i]和B[j]的大小,将较小的元素加入到合并后的数组C中,并将对应指针向后移动一位。当其中一个数组的指针到达末尾时,将另一个数组中剩余的元素按顺序加入到C中即可。
给定两个升序数组A,B,将这两个数组合并为一个升序数组。数组大小不超过1000
可以使用归并排序的思想来合并两个有序数组。具体步骤如下:
1. 创建一个新的数组C,长度为A和B的长度之和。
2. 定义三个指针,分别指向数组A、B和C的末尾。
3. 比较A和B末尾的元素,将较大的元素复制到C的末尾,并将指针向前移动一位。
4. 重复步骤3直到A和B中的一个被复制完全。
5. 将剩余的元素从另一个数组复制到C中。
下面是Python实现代码:
```python
def merge_sorted_arrays(A, B):
len_a, len_b = len(A), len(B)
C = [0] * (len_a + len_b)
i, j, k = len_a - 1, len_b - 1, len_a + len_b - 1
while i >= 0 and j >= 0:
if A[i] > B[j]:
C[k] = A[i]
i -= 1
else:
C[k] = B[j]
j -= 1
k -= 1
while i >= 0:
C[k] = A[i]
i -= 1
k -= 1
while j >= 0:
C[k] = B[j]
j -= 1
k -= 1
return C
```
其中,变量i、j、k分别对应数组A、B、C的指针,从数组末尾开始向前扫描,以保证在C中的元素顺序是升序。第一个while循环用于将A和B中的元素依次复制到C中,第二个和第三个while循环则用于将剩余的元素复制到C中。