• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Uriel's Corner

            Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
            posts - 0, comments - 50, trackbacks - 0, articles - 594
            模擬Least Frequently Used (LFU) cache的初始化、插入、讀取操作
            參考了Discussion->https://leetcode.com/problems/lfu-cache/solutions/2844415/python-is-easy/
            學(xué)習(xí)到了python的OrderedDict,用在這里很適合!


             1 #460
             2 #Runtime: 1065 ms (Beats 44.83%)
             3 #Memory: 88.8 MB (Beats 13.79%)
             4 
             5 class Obj:
             6     def __init__(self, key, val, cnt):
             7         self.key = key
             8         self.val = val
             9         self.cnt = cnt
            10 
            11 
            12 class LFUCache(object):
            13     def __init__(self, capacity):
            14         """
            15         :type capacity: int
            16         """
            17         self.cap = capacity
            18         self.obj_keys = {}
            19         self.obj_cnt = defaultdict(OrderedDict)
            20         self.min_cnt = None
            21 
            22 
            23     def get(self, key):
            24         """
            25         :type key: int
            26         :rtype: int
            27         """
            28         if key not in self.obj_keys:
            29             return -1
            30         obj = self.obj_keys[key]
            31         del self.obj_cnt[obj.cnt][key]
            32         if not self.obj_cnt[obj.cnt]:
            33             del self.obj_cnt[obj.cnt]
            34         obj.cnt += 1
            35         self.obj_cnt[obj.cnt][key] = obj
            36         if not self.obj_cnt[self.min_cnt]:
            37             self.min_cnt += 1
            38         return obj.val
            39 
            40 
            41     def put(self, key, value):
            42         """
            43         :type key: int
            44         :type value: int
            45         :rtype: None
            46         """
            47         if not self.cap:
            48             return
            49         if key in self.obj_keys:
            50             self.obj_keys[key].val = value
            51             self.get(key)
            52             return
            53         if len(self.obj_keys) == self.cap:
            54             k, n = self.obj_cnt[self.min_cnt].popitem(last=False) 
            55             del self.obj_keys[k]
            56         self.obj_cnt[1][key] = self.obj_keys[key] = Obj(key, value, 1)
            57         self.min_cnt = 1
            58         return
            59 
            60 
            61 # Your LFUCache object will be instantiated and called as such:
            62 # obj = LFUCache(capacity)
            63 # param_1 = obj.get(key)
            64 # obj.put(key,value)
            久久这里只有精品首页| 国产ww久久久久久久久久| 久久久久高潮综合影院| 中文国产成人精品久久不卡| 久久99精品久久久久婷婷| 久久久久国产日韩精品网站| 国产aⅴ激情无码久久| 久久香蕉国产线看观看99| 久久受www免费人成_看片中文 | 久久天天躁狠狠躁夜夜不卡| 亚洲精品无码久久久久| 久久久久噜噜噜亚洲熟女综合| 性欧美丰满熟妇XXXX性久久久| 国产精品丝袜久久久久久不卡 | 亚洲va中文字幕无码久久| 99久久无码一区人妻a黑| 亚洲人成无码www久久久| 精品久久久久久综合日本| 国内精品伊人久久久久777| 欧美精品丝袜久久久中文字幕 | 99久久精品国产免看国产一区| 欧美精品丝袜久久久中文字幕 | 久久成人国产精品| 日本精品久久久久影院日本| 99久久精品国产麻豆| 久久久久99精品成人片试看| 色综合合久久天天给综看| 国产精品九九久久精品女同亚洲欧美日韩综合区| 怡红院日本一道日本久久| 久久久久久午夜成人影院| 久久久无码精品亚洲日韩京东传媒 | 久久九九有精品国产23百花影院| 久久人妻少妇嫩草AV无码专区| 国产成人精品综合久久久久| 7777精品久久久大香线蕉| 久久精品aⅴ无码中文字字幕不卡| 亚洲国产精品嫩草影院久久| 亚洲国产高清精品线久久| 亚洲国产成人久久综合一区77| 久久久国产精品| 欧美日韩精品久久久免费观看|