LeetCode75-872-Leaf-Similar-Trees 🧠 思路总结 从左到右顺序,取出所有leaf节点 当遇到 node.left == null && node.right == null,说明它是leaf,就把node.val加进list中。 比较两个leaf序列是否完全相同 list1.equals(list2) ❗ 易错点 / 小坑 这道题目不适用于 left = 2n + 1, right = 2n 2026-02-15 LeetCode > 75 > Binary Tree #Binary Tree #dfs #Tree
LeetCode75-206-Reverse-Linked-List 🧠 思路总结 把每个节点的 next 指向它前一个节点。 原来: 1 → 2 → 3 → 4 → 5 → null变成: 5 → 4 → 3 → 2 → 1 → null ✅ 代码(Java)1234567891011121314151617181920212223/** * Definition for singly-linked list. * public class ListNode 2026-02-14 LeetCode > 75 > Linked List #Linked List
LeetCode75-328-Odd-Even-Linked-List 🧠 思路总结将原链表 拆成 两条链: odd 链 even 链 遍历过程中同时维护两个链表,最后把odd链尾部接到even链头部 ❗ 易错点 / 小坑 大多数情况下:是先想清楚循环里要干什么,再反推需要什么终止条件 忘记保存 evenHead while 条件写错 ✅ 代码(Java)12345678910111213141516171819202122232425262 2026-02-13 LeetCode > 75 > Linked List #Linked List
LeetCode75-2095-Delete-Middle-Node 🧠 思路总结 链表没有index题目: 删除第 ⌊n / 2⌋ 个节点(0-based) 方法一:长度法 遍历一次,算长度 n 计算 middle = n / 2 再走到 middle - 1 删除 middle 方法二:快慢指针(最优解) 核心思想:slow 每次走 1 步, fast 每次走 2 步 这道题目不是要找中间的Node,而是要 2026-02-11 LeetCode > 75 > Linked List #Linked List #Two Pointers
LeetCode75-649-Dota2 🧠 思路总结 何时该用 Queue:只要题目里出现「按顺序轮流 + 用完还能再回来」,应该想到 queue。 这道题目可以想象成:一群人排队,一个接一个动,动完如果还活着,就回来排到队尾,继续动;被淘汰的直接poll掉。所以这道题目符合 FIFO 思路:R队列:存所有 R 的下标。D队列:存所有 D 的下标。下标越小,出手越早 ✅ 代码(Java)12345678910111213141516 2026-02-10 LeetCode > 75 > Queue #Queue #String
LeetCode75-933-Number-Of-Recent-Calls 🧠 思路总结当数据“按顺序来”,并且只关心“最早的什么时候该丢掉”,就用 Queue。因为时间 t 严格递增,所以用队列保存所有 ping 的时间,每次新 ping 来了,把 t-3000 之前的时间全部弹掉,队列剩下的数量就是答案。 ✅ 代码(Java)1234567891011121314class RecentCounter { Queue<Integer> q 2026-02-09 LeetCode > 75 > Queue #Queue #Hash Set
LeetCode75-394-Decode-String 🧠 思路总结这道题目为什么要用Stack:题目里有嵌套结构(必须先算里面,再算外面),这是LIFO = Stack。 扫描字符串: [:把当前状态压栈 ]:弹栈并结算当前层 字母直接拼 数字记录次数 ✅ 代码(Java)12345678910111213141516171819202122232425262728293031class Solution { p 2026-02-09 LeetCode > 75 > Stack #String #Stack #Reversion
LeetCode75-735-Asteroid-Collision 🧠 思路总结只有在一种情况下才会发生碰撞:左边的往右(+),右边的往左(-)。后面新的元素要和前面(最后)的元素进行反复比较,所以使用Stack。 ❗ 易错点 / 小坑 注意最后要翻转stack ✅ 代码(Java)123456789101112131415161718192021222324252627class Solution { public int[] as 2026-02-07 LeetCode > 75 > Stack #Array #Stack
LeetCode75-2390-Remove-Stars-From-String 🧠 思路总结 注意这三个词:最近的、左边的、还没被删的,已经在暗示使用Stack了。 可以注意到每次要删除的都是 最后留下 的一个字符,而这个正好符合 后进先出 (LIFO),所以这就是Stack的特征 ❗ 易错点 / 小坑 char 在 Java 里 必须且只能存 1 个字符,不能存储'' ✅ 代码(Java)1234567891011121314151617 2026-02-07 LeetCode > 75 > Stack #String #Stack
LeetCode75-2352-Equal-Row-And-Column-Pairs 🧠 思路总结 暴力法: 对每一行 ri,对每一列 cj,比较它们是否相等equals,但是逐元素比较的话,时间复杂度O(n) 使用HashMap: 遍历所有行,把每行转成字符串,存到HashMap中,并且记录出现次数 遍历每一列,把列也转成字符串 如果column在map中,就 count += map.get(col) ❗ 易错点 / 小坑 行可以直接 grid[i]去 2026-02-07 LeetCode > 75 > Hash #Hash Map