leetcode Day54 剑指专项 80

70 阅读1分钟

676. 实现一个魔法字典

MagicDictionary.prototype.buildDict = function(dictionary) {
    this.dict=dictionary
    this.counts=[]
    for(let i of this.dict){
        this.counts.push(i.length)
    }
};

/** 
 * @param {string} searchWord
 * @return {boolean}
 */
MagicDictionary.prototype.search = function(searchWord) {
    if(this.counts.indexOf(searchWord.length)===-1){
        return false
    }
    for(let i of this.dict){
        if(i.length!==searchWord.length){
            continue
        }else{
            let flag=0
            for(let k=0;k<i.length;k++){
                if(i[k]!==searchWord[k]){
                    flag++
                    if(flag>1){
                        break
                    }
                }
            }
            if(flag===1){
                return true
            }
        }
    }
    return false
};

剑指 Offer II 080. 含有 k 个元素的组合

var combine = function(n, k) {
    let result = [];
    help(1,[],result);
    return result;

    // 回溯法
    function help(i,cur,result) {
        // 终止条件
        if(i>n || cur.length == k) return;

        // 对于每个元素,我们可以选择,也可以不选择,前提是当前数组长度没越界
        // 1.不选择
        help(i+1,cur,result);

        // 2.选择
        cur = [...cur,i];
        if(cur.length==k) result.push(cur);
        help(i+1,cur,result);

        return result;
    }
}