代码随想录算法训练营第六天 | 242. 有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

76 阅读1分钟

242. 有效的字母异位词

242. 有效的字母异位词

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    const sMap = getMap(s);
    const tMap = getMap(t);

    if (sMap.size !== tMap.size) {
        return false;
    }

    for (const key of sMap.keys()) {
        const sValue = sMap.get(key);
        const tValue = tMap.get(key);
        
        if (sValue !== tValue) {
            return false;
        }
    }

    return true;

};

function getMap(str) {
    let map = new Map();

    for (let i = 0; i < str.length; i++) {
        let char = str[i];
        if (map.has(char)) {
            const times = map.get(char);
            map.set(char, times + 1);
        } else {
            map.set(char, 1);
        }
    }

    return map;
}

349. 两个数组的交集

349. 两个数组的交集


/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersection = function(nums1, nums2) {
    const set1 = new Set(nums1);

    let res = new Set();
    for (let i = 0; i < nums2.length; i++) {
        let tar = nums2[i];
        if (set1.has(tar)) {
            res.add(tar);
        }
    }

    let arr = Array.from(res);
    return arr;
};

202. 快乐数

202. 快乐数

/**
 * @param {number} n
 * @return {boolean}
 */
var isHappy = function(n) {
    let set = new Set();

    let num = n;
    while(1) {
        let sum = getSum(num);

        if (sum === 1) {
            return true;
        } else if (set.has(sum)) {
            return false;
        } else {
            set.add(sum);
        }

        num = sum;
    }

    return false;
};

function getSum(n) {
    let sum = 0;

    let num = n;
    while(num) {
        sum += Math.floor(num % 10) ** 2
        num = Math.floor(num / 10)
    }

    return sum;
}

1. 两数之和

1. 两数之和


/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    let map = new Map();

    for (let i = 0; i < nums.length; i++) {
        let record = map.get(nums[i]);
        if (record !== undefined) {
            return [i, record];
        } else {
            let minus = target - nums[i];
            map.set(minus, i)
        }
    }

    return [];
};