Skip to content

初级算法 排序和搜索

合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列

js
var merge = function(nums1, m, nums2, n) {
    let nums3 =  nums1.slice(0, m)
    let p1 = p2 = p3 = 0
    while( p3!= m && p2 != n){
        if(nums2[p2] < nums3[p3]){
            nums1[p1] = nums2[p2]
            p2++
        }else {
            nums1[p1] = nums3[p3]
            p3++
        }
        p1++
    }
    if(p2 == n){
         while(p3 != m){
            nums1[p1] = nums3[p3]
            p1++
            p3++
         }
    } else {
         while(p2 !=n){
            nums1[p1] = nums2[p2]
            p1++
            p2++
         }
    }
};

第一个错误的版本

js
var solution = function(isBadVersion) {
    return function(n) {
        let left = 1
        let right= n
        while(left < right){
            let mid =  left + Math.floor((right - left) / 2)
            if(isBadVersion(mid)){
                right = mid
            }else {
                left = mid + 1
            }
        }
        return left
    };
};