leetcode Day34 数组

81 阅读1分钟

464. 我能赢吗

var canIWin = function(maxChoosableInteger, desiredTotal) {
    if(maxChoosableInteger>=desiredTotal)return true
    if((1+maxChoosableInteger)*maxChoosableInteger/2<desiredTotal)return false
    const dp={}
    const f=(total,state)=>{
        if(dp[state]!==undefined)return dp[state]
        for(let i=1;i<=maxChoosableInteger;i++){
            //左移运算符,a<<b相当于a*2**b
            let cur=1 << i
            if(cur & state)continue
            if(i>=total)return dp[state]=true
            if(!f(total-i,state | cur))return dp[state]=true
        }
        return dp[state]=false
    }
    return f(desiredTotal,0)
};

1287. 有序数组中出现次数超过25%的元素

var findSpecialInteger = function(arr) {
    var map=new Map()
    arr.forEach(item=>map.set(item,map.has(item)?map.get(item)+1:1))
    for(let [i,j] of map){
        if(j>arr.length/4) return i
    }
};

1002. 查找共用字符

var commonChars = function(words) {
    let res=[]
    let word=words[0]
    for(let i of word){
        if(words.every(m=>m.includes(i))){
            words=words.map(k=>k.replace(i,''))
            res.push(i)
        }
    }
    return res
};