題目詳情:
給你兩(liang)個整數數組 nums1 和(he) nums2 ,它(ta)們已(yi)經(jing)按非(fei)降序排序,請(qing)你返(fan)(fan)回(hui)兩(liang)個數組的 最小(xiao)公共(gong)整數 。如(ru)果(guo)兩(liang)個數組 nums1 和(he) nums2 沒有公共(gong)整數,請(qing)你返(fan)(fan)回(hui) -1 。
如果(guo)一個整數(shu)在兩(liang)個數(shu)組中都(dou) 至少出現一次 ,那(nei)么這(zhe)個整數(shu)是數(shu)組 nums1 和 nums2 公共 的。
示例:
輸入:nums1 = [1,2,3], nums2 = [2,4]
輸出:2
解釋:兩(liang)個數組的最小公共(gong)元素是 2 ,所(suo)以我們返(fan)回 2 。
解題思路:
通過使用兩個指針 i 和 j 來遍歷數組 nums1 和 nums2。開(kai)始時,將兩個指針都指向數組的開(kai)頭。
然后(hou),進入循(xun)(xun)環,當(dang)其中一個(ge)指針(zhen)達(da)到數組末尾時結束循(xun)(xun)環:
- 如果當前兩個指針指向的元素相等,則找到了最小的公共整數,直接返回該元素。
- 如果
nums1[i]小于nums2[j],則說明nums1[i]不可能是公共整數,將指針i向后移動一位。 - 如果
nums1[i]大于nums2[j],則說明nums2[j]不可能是公共整數,將指針j向后移動一位。
最終循環結束后,如(ru)果(guo)沒有(you)找到公共整數,則返回 -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));