11-算法练习记录
手撕代码热门题
① 牛客 · BM6 判断链表中是否有环【简单】
- 方法1:双指针(快、慢指针)【时间复杂度:O(n)、空间复杂度:O(1)】
1 | # class ListNode: |
- 方法2:哈希表(存节点,判断是否有环)【时间复杂度:O(n)、空间复杂度:O(n)】
1 | # class ListNode: |
② 牛客 · BM1 反转链表【简单】
- 方法1:栈实现
- 方法2:双链表
③ 合并两个有序链表【简单】
- 方法1:双指针
④ 二叉树遍历
- 方法1:递归(深度优先)
- 方法2:列表(广度优先)
⑤ 单利模式
- 方法1:
⑥ LRU缓存
- 方法1:(最优实现)双向链表 + 哈希
⑦ 合并有序数组
- 方法1:双指针
⑧ 快排
⑨ 两数之和
- 方法1:哈希
1
2
3
4
5
6hashset = dict()
for i in range(len(nums)):
if target - nums[i] in hashset:
return [hashset[target-nums[i]], i]
hashset[nums[i]] = i
return []
⑩ 最长回文字串
- 方法1:贪心算法
⑪ 二叉树最近公共祖先
核心思路:遍历
(其他)判断回文字符串
(其他)两段字符创的最大公共字符串
(其他)有序链表转换二叉搜索树
(其他)两个栈实现队列
(其他)三个小城交替打印ABC
(其他)判断回文字符串
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 云般自由人!

