Re: [閒聊] 每日leetcode

看板Marginalman作者 (早瀬ユウカの体操服 )時間10月前 (2025/02/07 20:57), 編輯推噓0(000)
留言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
文章代碼(AID): #1dfWCb-D (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1dfWCb-D (Marginalman)