🙄

100日アルゴリズム[8日目・hashTable]

2024/03/28に公開

解いた問題

https://leetcode.com/problems/n-repeated-element-in-size-2n-array/

回答

function repeatedNTimes(nums: number[]): number {
    let hashMap: Map<number,number> = new Map;

    for (let i:number = 0; i < nums.length; i++) {
        hashMap.set(nums[i], (hashMap.get(nums[i]) || 0) +1);
    }
    const keys = Array.from(hashMap.keys());
    const values = Array.from(hashMap.values())
    for (let i:number = 0; i < keys.length; i++) {
        if (values[i] > 1) return keys[i]
    }
};

mapを使ってキーに数値を、バリューにその出現回数を記録しています。

もう少し短くすることもできます。

function repeatedNtimes(nums: number[]): number {
    let hashMap: Map<number, number> = new Map;
    for (const key of hashMap){
        hashMap.set(key, (hashMap.get(key) || 0) + 1);
    }
    for ([key, value] of hashMap) {
        if(value > 1) return key; 
    }
}

Discussion