大厂程序员面试题及答案解析(名校出品).docx

大厂程序员面试题及答案解析(名校出品).docx

大厂程序员面试题及答案解析(名校出品)

一、算法与数据结构(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)

1亿VIP精品文档

相关文档