第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

【金秋打卡】第21天+計(jì)算機(jī)組成原理

標(biāo)簽:
幽默段子

第一模块:5-8LFU最少使用缓存置换算法
讲师:咚咚呛
第二模块,课程内容

除记录频率外,还记录同频率最近使用的节点

class LFUNode(Node):
    def __init(self, key, value):
        self.freq = 0
        super(LFUNode, self).__init__(key, value)


class LFUCache(object):
    def __init__(self, capacity):
        self.capacity = capacity
        self.map = {}
        self.size = 0
        self.freq_map = {}  # key:频率,value:频率对应的双向链表
        
    def __update_freq(self, node):
        """更新节点的频率"""
        freq = node.freq
        node = self.freq_map[freq].remove(node)  # 从原频率队列中删除node
        if self.freq_map[freq].size == 0:
            def self.freq_map[freq]  # 若原频率队列变为空,则删除该链表
        
        freq += 1  # 频率加1
        node.freq = freq  # 更新节点频率
        if freq not in self.freq_map:
            self.freq_map[freq] = DoubleLinkedList()
        self.freq_map[freq].append(node)  # 将节点加入新的对应的频率链表
        
    def get(self, key):
        if key not in self.map:
            return -1
        node = self.map.get(key)
        sefl.__update_freq(node)
        return node.value
        
    def put(self, key, value):
        if self.capacity == 0:
            return
        if key in self.map:  # 缓存命中
            node = self.map.get(key)
            node.value = value
            self.__update_freq(node)  # 更新节点使用频率
        else:
            if self.size == self.capacity:  # 缓存溢出
                min_freq = min(self.freq_map)
                node = self.freq_map[min_freq].pop()
                def self.map[node.key]
                self.size -= 1
            node = LFUNode(key, value)  # 为新的内容创建新节点
            node.freq = 1  # 初始化频率
            self.map[key] = node
            if node.freq not in self.freq_map:
                self.freq_map[node.freq] = DoubleLinkedList()
            node = self.freq_map[node.freq].append(node)  # 将新节点加入对应的频率双向链表
            self.size += 1
        
    def print(self):
        print('='*30)
        for k, v in self.freq_map.items():  # 打印频率双向链表
            print("freq = %d" % k)
            self.freq_map[k].print()
        print('='*30)
        print()


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消