设计题 解题模板

适用场景

数据结构设计:LRU、Trie、LFU、线程安全

通用模板

LRU 缓存

 
# 哈希表 + 双向链表
 
class DLinkedNode:
 
    def __init__(self, key=0, val=0):
 
        self.key = key; self.val = val
 
        self.prev = None; self.next = None
 
#       超出容量则删除尾部
 

Trie(前缀树)

 
class TrieNode:
 
    def __init__(self):
 
        self.children = [None]*26
 
        self.is_end = False
 
# insert/search/startsWith 都从 root 开始逐字符走
 

关键要点

  • LRU 为什么用双向链表?O(1) 删除需知前驱

  • Trie 空间换时间,前缀匹配比哈希表快

  • 设计题画图讲清思路再写代码

→ 查看该分类题目:LeetCode学习路线图 > 十五、设计题


关联题型

关联题型常见结合方式典型题目
链表链表实现LRU146LRU缓存
栈与队列栈实现队列 / 队列实现栈225/232互相实现
堆维护数据流中位数295数据流中位数