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);
};