Day 6: 哈希表基础

242.有效的字母异位词

function isAnagram(s: string, t: string): boolean {
    let sMap = new Map();
    let tMap = new Map();
    for(let letter of s){
        sMap.get(letter) ? sMap.set(letter, sMap.get(letter) + 1) : sMap.set(letter, 1);
    }
    for(let letter of t){
        tMap.get(letter) ? tMap.set(letter, tMap.get(letter) + 1) : tMap.set(letter, 1);
    }
    for(let key of sMap.keys()){
        if(tMap.get(key) !== sMap.get(key)){
            return false;
        }
        tMap.delete(key);
    }
    if(tMap.size !== 0) return false;
    return true;
};

官方题解:

function isAnagram(s: string, t: string): boolean {
    if (s.length !== t.length) return false;
    let helperArr: number[] = new Array(26).fill(0);
    let pivot: number = 'a'.charCodeAt(0);
    for (let i = 0, length = s.length; i < length; i++) {
        helperArr[s.charCodeAt(i) - pivot]++;
        helperArr[t.charCodeAt(i) - pivot]--;
    }
    return helperArr.every(i => i === 0);
};

349. 两个数组的交集

function intersection(nums1: number[], nums2: number[]): number[] {
    let nums1Map = new Set(nums1);
    let nums2Map = new Set(nums2);
    let results = []
    nums1Map.forEach(value => {
        nums2Map.has(value) && results.push(value);
    })
    return results;
};

秀操作:

function intersection(nums1: number[], nums2: number[]): number[] {
    return Array.from(new Set(nums1.filter(i => nums2.includes(i))))
};

202. 快乐数

function numToArr(n: number): number[]{
    let resultArr = [];
    let rest = n;
    while(rest){
        resultArr.push(rest % 10);
        rest = Math.floor(rest / 10);
    }
    return resultArr;
}
function isHappy(n: number): boolean {
    let mySet = new Set();
    let sum = n;
    while(true){
        let nums = numToArr(sum);
        sum = nums.reduce((accumulator, currentValue) => accumulator + currentValue * currentValue, 0);
        if(mySet.has(sum)) return false;
        mySet.add(sum);
        if(sum === 1) return true;
    }
};

官方题解:

return String(val).split("").reduce((pre, cur) => (pre + Number(cur) * Number(cur)), 0);  这里太秀了

function isHappy(n: number): boolean {
    // Utils
    // 计算val各位的平方和
    function calcSum(val: number): number {
        return String(val).split("").reduce((pre, cur) => (pre + Number(cur) * Number(cur)), 0);
    }

    let storeSet: Set<number> = new Set();
    while (n !== 1 && !storeSet.has(n)) {
        storeSet.add(n);
        n = calcSum(n);
    }
    return n === 1;
};

1. 两数之和

function twoSum(nums: number[], target: number): number[] {
    let myMap = new Map();
    for(let index in nums){
        if(myMap.has(nums[index]))
            return [myMap.get(nums[index]), index]
        myMap.set(target - nums[index], index);
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值