- 4
- 0
- 约7.49千字
- 约 19页
- 2026-03-13 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年百度高级技术专员面试题目
一、编程实现题(共3题,每题20分,总分60分)
1.(20分)设计一个高效的LRU(最近最少使用)缓存机制
题目描述:
实现一个LRU缓存机制,支持以下操作:
-`get(key)`:获取键`key`对应的值,如果存在则返回值,并将其标记为最近使用;如果不存在返回-1。
-`put(key,value)`:插入或更新键值对,如果缓存已满,则移除最久未使用的元素。
要求:
-使用哈希表和双向链表实现,时间复杂度为O(1)。
-解释你的实现思路和关键数据结构的选择。
答案与解析:
实现思路:
-使用哈希表存储键到双向链表节点的映射,实现O(1)的get操作。
-使用双向链表存储缓存项,头部为最近使用的元素,尾部为最久未使用的元素。
-get操作时,如果键存在,将其移动到链表头部;如果不存在,返回-1。
-put操作时,如果键已存在,更新值并移动到链表头部;如果不存在,创建新节点并添加到链表头部。如果链表已满,移除链表尾部节点(最久未使用),并删除哈希表中的映射。
关键数据结构:
-哈希表:`key→Node`,Node包含`key`,`value`,`prev`,`next`。
-双向链表:头部为最近使用,尾部为最久未使用。
代码示例(Python):
pytho
原创力文档

文档评论(0)