3160.js
/** ------------------------------------------------------------------------------
*
* 3160. Find the Number of Distinct Colors Among the Balls
* Topics: Array, Hash Table
* https://leetcode.com/problems/find-the-number-of-distinct-colors-among-the-balls/description/?envType=daily-question&envId=2025-02-07
*
------------------------------------------------------------------------------ */
/**
* @param {number} limit
* @param {number[][]} queries
* @return {number[]}
*/
var queryResults = function (limit, queries) {
const ball = new Map(),
color = new Map(),
answer = []
let distinct = 0
for (const [pos, c] of queries) {
if (ball.has(pos)) {
let prevColor = ball.get(pos)
let cnt = color.get(prevColor) - 1
if (cnt === 0) {
color.delete(prevColor)
distinct--
} else {
color.set(prevColor, cnt)
}
}
ball.set(pos, c)
let cnt = (color.get(c) || 0) + 1
color.set(c, cnt)
if (cnt === 1) distinct++
answer.push(distinct)
}
return answer
}
console.log(
queryResults(4, [
[1, 1],
[2, 2],
[3, 3],
[4, 4],
]),
)