当前位置: 首页> 教育> 大学 > 网络设计制作服务_网页端二维码在哪里_搜索引擎优化排名优化培训_合肥seo搜索优化

网络设计制作服务_网页端二维码在哪里_搜索引擎优化排名优化培训_合肥seo搜索优化

时间:2025/7/9 17:05:11来源:https://blog.csdn.net/liu16659/article/details/142439675 浏览次数:0次
网络设计制作服务_网页端二维码在哪里_搜索引擎优化排名优化培训_合肥seo搜索优化

1.题目

在这里插入图片描述

2.思想

3.代码

3.1 代码1

下面这是一版错误的代码。错误的原因在于逻辑不正确导致最后的代码也是不正确的。

class LRUCache:def __init__(self, capacity: int):self.time = 0 # 用于全局记录访问的时间self.num2time = {} # 数字到时间的映射self.key2val = {} # 数字到数字self.capacity = capacityself.history = [] # 用于记录操作的历史# get 也要对时间进行修改def get(self, key: int) -> int:         if self.key2val.get(key,-1) != -1:self.time += 1self.num2time[key] = self.time # 更新时间成最新的self.history.append(key)return self.key2val.get(key,-1)def put(self, key: int, value: int) -> None:self.time += 1 # 时间戳加1self.history.append(key)        # 如果目前还没有装满,那么直接放if(len(self.key2val) < self.capacity):self.key2val[key] = valueelif(self.key2val.get(key,-1)!=-1):self.key2val[key] = value # 直接更新self.num2time[key] = self.timeself.history.append(key)else: # 考虑去掉某个数            curTime = self.time# 获取左侧的时间while(self.num2time.get(self.history[0],-1)==-1):del self.history[0] # 删除 第0位 元素leftTime = self.num2time[self.history[0]]while(curTime - leftTime < self.capacity):del self.history[0] # 删除 第0位 元素while(self.num2time.get(self.history[0],-1)==-1):del self.history[0] # 删除 第0位 元素leftTime = self.num2time[self.history[0]] invalid_key = self.history[0]# print("invalid_key = ",invalid_key)# print("key2val = ",self.key2val)# print("history = ", self.history)del self.key2val[invalid_key]del self.history[0]del self.num2time[invalid_key]self.key2val[key] = valueself.num2time[key] = self.time# print("num2time = ", self.num2time)# Your LRUCache object will be instantiated and called as such:
# obj = LRUCache(capacity)
# param_1 = obj.get(key)
# obj.put(key,value)

错误的逻辑主要在下面这个地方:
在这里插入图片描述
这里的while是想用于找出该删除哪个数,但是这个逻辑并非正确
这里的curTime表示当前的时间,leftTime表示访问栈中最左侧节点的时间。二者的距离与capacity进行比较:

  • 如果距离大于等于capacity,那么就表明需要把这个数删除
    这样依次判断,找出需要退出的那个数即可。
关键字:网络设计制作服务_网页端二维码在哪里_搜索引擎优化排名优化培训_合肥seo搜索优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: