ARTS Week 28
阿新 • • 發佈:2022-03-06
Algorithm
本週的 LeetCode 題目為 347. 前 K 個高頻元素
給你一個整數陣列 nums 和一個整數 k,請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。
輸入: nums = [1,1,1,2,2,3], k = 2
輸出: [1,2]
先遍歷一次陣列,利用Map統計出各個元素的出現次數。而後將不同元素的出現次數作為排序的依據,維護一個大小為k的小頂堆,最後獲取堆頂的元素即可。
import java.util.SortedMap; class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> numCount = new HashMap<>(); for (int i = 0; i < nums.length; i++) { numCount.put(nums[i], numCount.getOrDefault(nums[i], 0) + 1); } PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { return o1[1] - o2[1]; } }); for (int key : numCount.keySet()) { int count = numCount.get(key); if (pq.size() == k) { if (pq.peek()[1] < count) { pq.poll(); pq.offer(new int[]{key, count}); } } else { pq.offer(new int[]{key, count}); } } int[] ans = new int[k]; for (int i = 0; i < k; i++) { ans[i] = pq.poll()[0]; } return ans; } }
Review
本週 Review 的英文文章為:為什麼我不開部落格?
作者主要介紹了自己為什麼不開設部落格的原因,儘管作者喜歡coding,喜歡閱讀,仍沒有開設部落格,主要列舉了下面幾個原因:
- “我沒有什麼有趣的事要說”:作者認為自己沒有太多強烈的、獨特的、新穎的看法需要分享出來
- “我不是一個好的程式設計師”:作者認為自己的大部分技能只不過是初學者水平,沒有必要去分享出來
- “我不認為這是一個好的簡歷建設”:作者認為一般的部落格不足以作為一個好的簡歷建設平臺,如果你僅僅有部落格,也許都沒有人來訪問
Tip
Makefile 中可以通過一個 .PHONY
來設定一個偽目標,進而實現其他功能,如實現 make clean
.PHONY : clean
clean:
rm $(OBJS) *.o a.out
Share
本週的狀態不是很好,感覺像是處在一個低潮期,做很多事都提不起興趣,效率也並不高,需要好好調整一下自己的狀態,找找根源,加油:)