😽
100日アルゴリズム[22日目・配列内の等しい数と割り切れる数のペア]
解いた問題
解法
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