Hi there 👋

  • ✨ 欢迎来到我的个人博客
  • 🔭 我目前的研究兴趣包括深度学习以及 Web 开发

005:K个一组翻转链表

LeetCode 25 https://leetcode.cn/problems/reverse-nodes-in-k-group/description/ 难度:Hard 反转一组节点的代码与 LeetCode 206 类似,每次修改一个节点的 next。 ListNode* nxt = cur->next; cur->next = pre; pre = cur; cur = nxt; 需要注意的是,每次需要保存一组节点的上一个节点 p0,反转结束后,更新 p0 和 p0->next。 ListNode* nxt = p0->next; p0->next->next = cur; p0->next = pre; p0 = nxt; 时间复杂度:O(n),其中 n 为链表节点个数。 空间复杂度:O(1),仅用到若干额外变量。 ...

六月 25, 2025 · Cassius

004:数组中的第K个最大元素

LeetCode 215 https://leetcode.cn/problems/kth-largest-element-in-an-array/description/ 快速选择算法,类似快速排序。 时间复杂度:O(n) 空间复杂度:O(logn) ...

六月 25, 2025 · Cassius

003:反转链表

LeetCode 206 https://leetcode.cn/problems/reverse-linked-list/description/ 难度:Easy 本题有迭代和递归两种解法,迭代法更易理解,且空间复杂度更优。 ...

六月 25, 2025 · Cassius

002:LRU缓存

LeetCode 146 https://leetcode.cn/problems/lru-cache/description/ 难度:Mid 本题是双向链表和哈希表的经典题目。每个节点有 key,value,还有两个指针 prev 和 next 分别指向前一个和下一个节点。 此外,链表中还包含一个 dummy 节点,让每个节点的 prev 和 next 都不为空。 时间复杂度:所有操作均为 O(1)。 空间复杂度:O(min(p,capacity)),其中 p 为 put 的调用次数。 ...

六月 25, 2025 · Cassius

001:无重复字符的最长子串

LeetCode 0003 https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 难度:Mid 本题为经典的哈希表加滑动窗口的题目,哈希表统计窗口内字符出现次数,如果窗口右端点字符出现次数大于 1,右移左端点,直到无重复字符,最后更新答案。窗口的长度为 right - left + 1。 时间复杂度:O(n),其中 n 为 s 的长度。注意 left 至多增加 n 次,所以整个二重循环至多循环 O(n) 次。 空间复杂度:O(∣Σ∣),其中 ∣Σ∣ 为字符集合的大小,本题中字符均为 ASCII 字符,所以 ∣Σ∣≤128。 ...

六月 25, 2025 · Cassius

三色标记法求拓扑排序

本文介绍用三色标记法求拓扑排序。例题:LeetCode 210 课程表 II。 ...

五月 14, 2024 · Cassius

Floyd全源最短路算法

之前介绍了 Dijkstra 单源最短路算法,本文介绍 Floyd 全源最短路算法。例题: LeetCode 1334 阈值距离内邻居最少的城市。 ...

四月 14, 2024 · Cassius

并查集

并查集是一种求图的连通分量数量的算法。 ...

三月 14, 2024 · Cassius

快速幂算法

LeetCode 50 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,\(x^n\) )。 ...

二月 7, 2024 · Cassius

快速排序和第 K 小的数

本文介绍快速排序算法以及基于快速排序的选择方法的实现。 ...

一月 6, 2024 · Cassius