Re: [閒聊] 每日leetcode
看板Marginalman作者Rushia (早瀬ユウカの体操服 )時間10月前 (2025/02/07 20:57)推噓0(0推 0噓 0→)留言0則, 0人參與討論串1326/1553 (看更多)
https://leetcode.com/problems/find-the-number-of-distinct-colors-among-the-balls
3160. Find The Number of Distinct Colors Among the Balls
給你一個數字limit表示球球的數量,陣列queries[i] = [a, b] 表示把a球球塗色成b
顏色,球球一開始都沒顏色,求出每次塗色之後這些球球裡有幾個不同的顏色(上色才算)
。
思路:
1.用一個MapA記錄球球的塗色狀況,另一個MapB紀錄每個顏色有幾個,用queries更新球
球的顏色和數量,如果數量變0移除KEY,每次返回MapB的大小就好。
Java Code:
----------------------------------------------
class Solution {
public int[] queryResults(int limit, int[][] queries) {
int n = queries.length;
int[] res = new int[n];
Map<Integer, Integer> colorMap = new HashMap<>();
Map<Integer, Integer> colorCount = new HashMap<>();
for (int i = 0; i < n; i++) {
int a = queries[i][0];
int b = queries[i][1];
Integer prevColor = colorMap.get(a);
if (prevColor == null) {
colorCount.put(b, colorCount.getOrDefault(b, 0) + 1);
} else if (prevColor != b) {
colorCount.put(prevColor, colorCount.get(prevColor) - 1);
if (colorCount.get(prevColor) == 0) {
colorCount.remove(prevColor);
}
colorCount.put(b, colorCount.getOrDefault(b, 0) + 1);
}
colorMap.put(a, b);
res[i] = colorCount.size();
}
return res;
}
}
----------------------------------------------
--
https://i.imgur.com/R8vs1tZ.jpeg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1738933029.A.F8D.html
討論串 (同標題文章)
完整討論串 (本文為第 1326 之 1553 篇):