leetcode Day27 二叉树

70 阅读1分钟

面试题 01.05. 一次编辑

var oneEditAway = function(first, second) {
    if(Math.abs(first.length-second.length)>1){
        return false
    }
    if(first===second){return true}
    let flag=1
    let i=0,j=0
    while(i<first.length && j<second.length){
        if(first[i]===second[j]){
            i++
            j++
        }
        else{
            if(flag>0){
                if(first.length===second.length){
                    i++
                    j++
                }
                else if(first.length>second.length){
                    i++
                }
                else{
                    j++
                }
                flag--
            }
            else{
                return false
            }
        }
    }
    return true
};

404. 左叶子之和

var sumOfLeftLeaves = function(root) {
    let res=0
    const dfs=(root)=>{
        if(!root)return
        if(root.left && !root.left.left && !root.left.right){
            res+=root.left.val
        }
        dfs(root.left)
        dfs(root.right)
    }
    dfs(root)
    return res
};

501. 二叉搜索树中的众数

var findMode = function(root) {
    let map=new Map()
    let res=[]
    const dfs=(root)=>{
        if(!root)return
        dfs(root.left)
        map.set(root.val,map.has(root.val)?map.get(root.val)+1:1)
        dfs(root.right)
    }
    dfs(root)
    const max=Math.max(...map.values())
    for(let [key,value] of map){
        if(value===max){
            res.push(key)
        }
    }
    return res
};

530. 二叉搜索树的最小绝对差

var getMinimumDifference = function(root) {
    let res=[],ans=[]
    const dfs=(root)=>{
        if(!root)return
        dfs(root.left)
        res.push(root.val)
        dfs(root.right)
    }
    dfs(root)
    for(let i=0;i<res.length-1;i++){
        ans.push(res[i+1]-res[i])
    }
    return Math.min(...ans)
};

1694. 重新格式化电话号码

var reformatNumber = function(number) {
    let regPos = /^[0-9]+.?[0-9]*/
    let str=''
    let res=[]
    for(let i of number){
        if(regPos.test(i)){
            str+=i
        }
    }
    let j=0
    while(j<str.length){
        if(str.length-j>4){
            res.push(str.slice(j,j+3))
            j=j+3
        }
        else if(str.length-j===4){
            res.push(str.slice(j,j+2))
            res.push(str.slice(j+2,j+4))
            j=str.length
        }else{
            res.push(str.slice(j,str.length))
            j=str.length
        }
    }
    return res.join('-')
};