大厂程序员面试题及答案解析(名校出品)
一、算法与数据结构(100分)
1.题目:设计一个LRU(最近最少使用)缓存机制。它应该支持以下操作:获取数据get和写入数据put。
获取数据get(key)-如果键存在于缓存中,则获取键的值(总是正数),否则返回-1。
写入数据put(key,value)-如果键已经存在,则变更其值;如果键不存在,则插入该组键值对。当缓存达到其最大容量时,它应该在插入新数据之前删除最近最少使用的数据。
请实现LRUCache类:
LRUCache(intcapacity)以正整数capacity初始化LRU缓存
intget(intkey)如果键存在于缓存中,则返回键对应的值,否则返回-1。
voidput(intkey,intvalue)如果键已存在,则变更其值;如果键不存在,则插入该组键值对。当缓存达到其最大容量时,它应该在插入新数据之前删除最近最少使用的数据。
要求:时间复杂度O(1)。
答案:
使用哈希表(HashMap)来存储键值对,以实现O(1)的get和put操作;同时使用双向链表来维护数据的访问顺序。
数据结构设计:
`HashMapK,Node`:用于
原创力文档

文档评论(0)