现有两个有序数组 〔1,2,5,9,10小、13,4,6,9,101,请通过 js 来寻找这两个有序数组最小相同元素。
时间: 2023-09-30 07:10:00 浏览: 75
可以通过以下代码来寻找最小相同元素:
```js
const arr1 = [1, 2, 5, 9, 10];
const arr2 = [13, 4, 6, 9, 101];
let i = 0;
let j = 0;
let minElement = Infinity;
while (i < arr1.length && j < arr2.length) {
const diff = arr1[i] - arr2[j];
if (diff === 0) {
minElement = Math.min(arr1[i], minElement);
i++;
j++;
} else if (diff < 0) {
i++;
} else {
j++;
}
}
console.log(minElement); // Output: 9
```
这里采用了双指针的方法,分别指向两个数组。同时遍历两个数组,比较当前元素的大小,若相同则更新 minElement 变量,并将两个指针分别往后移动一位;若小的数组元素小,则将指向小数组的指针往后移动一位,否则将指向大数组的指针往后移动一位。最后得到的 minElement 就是最小相同元素。
相关问题
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` 合并为一个有序数组,并将结果打印到控制台上。