LeetCode 142. 环形链表 II 142. 环形链表 II解题思路快慢指针,如果有环,快慢指针一定会相遇。相遇后,同时移动头节点和慢指针,每次移动一步,直到相遇,相遇的节点就是环的入口节点。 2026-02-08 LeetCode #哈希表 #双指针 #链表
LeetCode 148. 排序链表 148. 排序链表解题思路 找到链表的中间节点 $head2$ 的前一个节点,并且断开 $head2$ 与其前一个节点的连接,这样就把原链表拆分成两个长度相同的链表 分治、递归调用 sortList,分别排序 $head$ 和 $head2$ 之后得到排序好的链表,最后我们合并这两个链表,然后头结点即可 2026-02-08 LeetCode #排序 #分治 #双指针 #链表 #归并排序
LeetCode 153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值解题思路利用旋转有序数组的性质,每次将中点与右边界比较,若中点更大说明最小值在右半段,否则在左半段,收缩区间直到左右指针重合,此时指向的就是最小值 2026-02-08 LeetCode #二分查找 #数组
LeetCode 155. 最小栈 155. 最小栈解题思路 push() 方法: 每当 push() 新值进来时,如果 新值 <= min_stack 的栈顶值,则把新值也存入 min_stack,使得 min_stack 的栈顶始终是整个栈 stack 中的最小值。 pop() 方法: 每当 pop() 出栈时,如果 pop() 出来的值等于 min_stack 的栈顶值,则说明最小值被弹出了,此时也要把 min 2026-02-08 LeetCode #栈 #设计
LeetCode 169. 多数元素 169. 多数元素解题思路 使用 Boyer-Moore 投票算法,维护一个候选元素 res 和一个计数器 count,遍历数组中的每个元素: 如果 count 为 0,则将当前元素设置为候选元素 res。 如果当前元素等于候选元素 res,则将计数器 count 加 1;否则,将计数器 count 减 1。 最后返回候选元素 res 即可。 2026-02-08 LeetCode #排序 #数组 #哈希表 #分治 #计数