现有两个有序数组 〔1,2,5,9,10小、13,4,6,9,101,请通过 js 来寻找这两个有序数组最小相同元素。
时间: 2023-09-30 19:02:51 浏览: 36
好的,让我来回答您的问题。可以使用双指针的方法来寻找最小相同元素,具体步骤如下:
1. 定义两个指针分别指向两个数组的起始位置,即 i=0,j=0。
2. 对于每一次循环,比较两个指针所指的元素大小,如果相等则返回该元素,否则将较小的指针向后移动一位,继续比较直到找到相等的元素或者其中一个数组遍历完。
3. 如果遍历完了其中一个数组仍未找到相同元素,则说明两个数组中没有相同元素。
具体代码实现如下:
```
function findMinSame(arr1, arr2) {
let i = 0, j = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] === arr2[j]) {
return arr1[i];
} else if (arr1[i] < arr2[j]) {
i++;
} else {
j++;
}
}
return -1; // 未找到相同元素的情况
}
```
使用方法如下:
```
const arr1 = [1, 2, 5, 9, 10];
const arr2 = [13, 4, 6, 9, 101];
const result = findMinSame(arr1, arr2);
console.log(result); // 输出 9
```
希望能够帮到您,有什么其他问题可以继续问我哦。
相关问题
js现有两个有序数组 [1, 2, 5, 9, 10]、[3, 4, 6, 9, 10],请通过js来寻找这两个有序数组最小相同元素。
可以使用双指针法来解决这个问题。我们可以分别定义两个指针 `i` 和 `j` 分别指向两个数组的开头,然后逐个比较两个指针所指向的元素,如果相等则返回该元素,如果不相等则将指向元素较小的指针向后移动一位,直到找到相等的元素或者其中一个指针到达数组末尾为止。
下面是实现代码:
```javascript
function findMinCommonNum(arr1, arr2) {
let i = 0, j = 0;
while (i < arr1.length && j < arr2.length) {
if (arr1[i] === arr2[j]) {
return arr1[i];
} else if (arr1[i] < arr2[j]) {
i++;
} else {
j++;
}
}
return null;
}
const arr1 = [1, 2, 5, 9, 10];
const arr2 = [3, 4, 6, 9, 10];
console.log(findMinCommonNum(arr1, arr2)); // 输出 9
```
在上述代码中,我们首先定义了两个指针 `i` 和 `j`,然后在 while 循环中逐个比较两个指针所指向的元素。如果两个元素相等,则返回该元素;否则,将指向元素较小的指针向后移动一位。如果其中一个指针到达数组末尾,则跳出循环并返回 null。最终,如果找到了相同的元素,则返回该元素的值,否则返回 null。
合并两个有序数组 js
要合并两个有序数组,可以使用双指针的方法。假设我们有两个有序数组 `arr1` 和 `arr2`,并且分别有长度 `m` 和 `n`。
我们可以定义两个指针 `i` 和 `j`,分别指向 `arr1` 和 `arr2` 的开头。然后,比较 `arr1[i]` 和 `arr2[j]` 的大小,并将较小的值添加到新的结果数组中。然后,将指针向后移动一位。重复这个过程,直到遍历完其中一个数组。
当其中一个数组遍历完后,我们只需要将另一个数组的剩余部分添加到结果数组的末尾即可。
下面是一个使用 JavaScript 实现的示例代码:
```javascript
function mergeSortedArrays(arr1, arr2) {
let m = arr1.length;
let n = arr2.length;
let i = 0;
let j = 0;
let mergedArr = [];
while (i < m && j < n) {
if (arr1[i] <= arr2[j]) {
mergedArr.push(arr1[i]);
i++;
} else {
mergedArr.push(arr2[j]);
j++;
}
}
while (i < m) {
mergedArr.push(arr1[i]);
i++;
}
while (j < n) {
mergedArr.push(arr2[j]);
j++;
}
return mergedArr;
}
// 示例用法
let arr1 = [1, 3, 5];
let arr2 = [2, 4, 6];
let merged = mergeSortedArrays(arr1, arr2);
console.log(merged); // 输出 [1, 2, 3, 4, 5, 6]
```
这个示例代码将两个有序数组 `arr1` 和 `arr2` 合并为一个有序数组,并将结果打印到控制台上。