题目详情:
给你两个整数数组 nums1 和 nums2 ,它们已经按非降序排序,请你返回两个数组的 最小公共整数 。如果两个数组 nums1 和 nums2 没有公共整数,请你返回 -1 。
如果一个整数在两个数组中都 至少出现一次 ,那么这个整数是数组 nums1 和 nums2 公共 的。
示例:
输入:nums1 = [1,2,3], nums2 = [2,4]
输出:2
解释:两个数组的最小公共元素是 2 ,所以我们返回 2 。
解题思路:
通过使用两个指针 i
和 j
来遍历数组 nums1
和 nums2
。开始时,将两个指针都指向数组的开头。
然后,进入循环,当其中一个指针达到数组末尾时结束循环:
- 如果当前两个指针指向的元素相等,则找到了最小的公共整数,直接返回该元素。
- 如果
nums1[i]
小于nums2[j]
,则说明nums1[i]
不可能是公共整数,将指针i
向后移动一位。 - 如果
nums1[i]
大于nums2[j]
,则说明nums2[j]
不可能是公共整数,将指针j
向后移动一位。
最终循环结束后,如果没有找到公共整数,则返回 -1。
代码实现:
function findMinCommonElement(nums1, nums2) {
let i = 0;
let j = 0;
while (i < nums1.length && j < nums2.length) {
if (nums1[i] === nums2[j]) {
return nums1[i];
} else if (nums1[i] < nums2[j]) {
i++;
} else {
j++;
}
}
return -1;
}
// 示例输入
const nums1 = [1, 2, 3];
const nums2 = [2, 4];
// 调用函数并输出结果
console.log(findMinCommonElement(nums1, nums2));