- 当然可以！下面是你可以直接记到笔记里的内容：

  ------

  ### 🧠 题型：**Top K 高频元素**（LeetCode 347）

  **题目描述**：给定一个整数数组 `nums` 和一个整数 `k`，返回出现频率最高的前 `k` 个元素，返回顺序可以任意。

  ------

  ### 📌 解法一：大根堆（最大堆）

  **思路**：

  1. 使用 `HashMap` 统计每个元素的出现频率。
  2. 构建一个**大根堆**（`PriorityQueue` + 自定义比较器），根据频率降序排列。
  3. 将所有元素加入堆中，**弹出前 `k` 个元素**即为答案。

  **适合场景**：

  - 实现简单，适用于对全部元素排序后取前 `k` 个。
  - 时间复杂度：**O(n log n)**，因为需要将所有 `n` 个元素都加入堆。

  ------

  ### 📌 解法二：小根堆（最小堆）

  **思路**：

  1. 使用 `HashMap` 统计频率。
  2. 构建一个**小根堆**，堆中仅保存前 `k` 个高频元素。
  3. 遍历每个元素：
     - 如果堆未满，直接加入。
     - 如果当前元素频率大于堆顶（最小频率），则弹出堆顶，加入当前元素。
  4. 最终堆中保存的就是前 `k` 个高频元素。

  **适合场景**：

  - 当 `k ≪ n` 时效率更高。
  - 时间复杂度：**O(n log k)**，因为堆中最多维护 `k` 个元素。

  ------

  ### ✅ 总结对比：

  | 方法   | 适合场景        | 时间复杂度 | 空间复杂度 |
  | ------ | --------------- | ---------- | ---------- |
  | 大根堆 | k ≈ n，简单易写 | O(n log n) | O(n)       |
  | 小根堆 | k ≪ n，更高效   | O(n log k) | O(n)       |

  ------

  需要我再写成代码模板笔记也可以，随时说！