LeetCode 12.2

117 阅读1分钟

LeetCode 101对称二叉树

//递归,对比左右两个结点是否相同即可。
var isSymmetric = function(root) {
    if(root===null) return true;
    return helper(root.left,root.right);
};
var helper = (left, right) =>{
    if(left===null&&right===null) return true;
    if(left===null||right===null) return false;
    return left.val===right.val&&helper(left.left,right.right)&&helper(left.right,right.left);
}
//迭代整不明白,不整了。

LeetCode 278 第一个错误的版本

//二分法
var solution = function(isBadVersion) {
    /**
     * @param {integer} n Total versions
     * @return {integer} The first bad version
     */
    return function(n) {
        let left = 1, right = n;
        while(left<=right){
            const mid = Math.floor((left+right)/2);
            if(!isBadVersion(mid)){
                left = mid + 1;
            }
            else{
                if(mid===1){
                    return 1;
                }
                else{
                    if(!isBadVersion(mid-1)){
                        return mid;
                    }
                    else{
                        right = mid -1;
                    }
                }
            }
        }
    };
};

LeetCode 88 合并两个有序数组

//双指针
var merge = function(nums1, m, nums2, n) {
    let left1 = 0;
    let left2 = 0;
    let res = [];
    while(left1<m||left2<n){
        if(left1===m){
            res.push(nums2[left2++]);
        }
        else if(left2===n){
            res.push(nums1[left1++]);
        }
        else if(nums1[left1]<nums2[left2]){
            res.push(nums1[left1++]);
        }
        else{
            res.push(nums2[left2++]);
        }
    }
    nums1 = nums1.splice(0,m+n,...res);
};