😽

100日アルゴリズム[22日目・配列内の等しい数と割り切れる数のペア]

に公開

解いた問題

https://leetcode.com/problems/count-equal-and-divisible-pairs-in-an-array/description/?envType=daily-question&envId=2025-04-17

解法

function countPairs(nums: number[], k: number): number {
    const indicesMap = new Map<number, number[]>();

    for(let i = 0; i < nums.length; i++) {
        if(!indicesMap.has(nums[i])) {
            indicesMap.set(nums[i], []);
        }
        indicesMap.get(nums[i])!.push(i)
    }

    let count = 0;

    for (const indices of indicesMap.values()) {
        for(let i = 0; i < indices.length; i++) {
            for(let j = i+1; j< indices.length; j++) {
                if((indices[i] * indices[j]) % k === 0) {
                    count++;
                }
            }
        }
    }
    return count;
}

Discussion