中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

專業(yè)網(wǎng)站設(shè)計(jì)招聘信息如何在百度上投放廣告

專業(yè)網(wǎng)站設(shè)計(jì)招聘信息,如何在百度上投放廣告,軟件開(kāi)發(fā)外包公司值不值得去,網(wǎng)站開(kāi)發(fā)參考文獻(xiàn)2015年后請(qǐng)你為 最不經(jīng)常使用(LFU)緩存算法設(shè)計(jì)并實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)。 實(shí)現(xiàn) LFUCache 類: LFUCache(int capacity) - 用數(shù)據(jù)結(jié)構(gòu)的容量 capacity 初始化對(duì)象int get(int key) - 如果鍵 key 存在于緩存中,則獲取鍵的值,否則返回 -1…

請(qǐng)你為?最不經(jīng)常使用(LFU)緩存算法設(shè)計(jì)并實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)。

實(shí)現(xiàn)?LFUCache?類:

  • LFUCache(int capacity)?- 用數(shù)據(jù)結(jié)構(gòu)的容量?capacity?初始化對(duì)象
  • int get(int key)?- 如果鍵?key?存在于緩存中,則獲取鍵的值,否則返回?-1?。
  • void put(int key, int value)?- 如果鍵?key?已存在,則變更其值;如果鍵不存在,請(qǐng)插入鍵值對(duì)。當(dāng)緩存達(dá)到其容量?capacity?時(shí),則應(yīng)該在插入新項(xiàng)之前,移除最不經(jīng)常使用的項(xiàng)。在此問(wèn)題中,當(dāng)存在平局(即兩個(gè)或更多個(gè)鍵具有相同使用頻率)時(shí),應(yīng)該去除?最久未使用?的鍵。

為了確定最不常使用的鍵,可以為緩存中的每個(gè)鍵維護(hù)一個(gè)?使用計(jì)數(shù)器?。使用計(jì)數(shù)最小的鍵是最久未使用的鍵。

當(dāng)一個(gè)鍵首次插入到緩存中時(shí),它的使用計(jì)數(shù)器被設(shè)置為?1?(由于 put 操作)。對(duì)緩存中的鍵執(zhí)行?get?或?put?操作,使用計(jì)數(shù)器的值將會(huì)遞增。

函數(shù)?get?和?put?必須以?O(1)?的平均時(shí)間復(fù)雜度運(yùn)行。

示例:

輸入:
["LFUCache", "put", "put", "get", "put", "get", "get", "put", "get", "get", "get"]
[[2], [1, 1], [2, 2], [1], [3, 3], [2], [3], [4, 4], [1], [3], [4]]
輸出:
[null, null, null, 1, null, -1, 3, null, -1, 3, 4]解釋:
// cnt(x) = 鍵 x 的使用計(jì)數(shù)
// cache=[] 將顯示最后一次使用的順序(最左邊的元素是最近的)
LFUCache lfu = new LFUCache(2);
lfu.put(1, 1);   // cache=[1,_], cnt(1)=1
lfu.put(2, 2);   // cache=[2,1], cnt(2)=1, cnt(1)=1
lfu.get(1);      // 返回 1// cache=[1,2], cnt(2)=1, cnt(1)=2
lfu.put(3, 3);   // 去除鍵 2 ,因?yàn)?cnt(2)=1 ,使用計(jì)數(shù)最小// cache=[3,1], cnt(3)=1, cnt(1)=2
lfu.get(2);      // 返回 -1(未找到)
lfu.get(3);      // 返回 3// cache=[3,1], cnt(3)=2, cnt(1)=2
lfu.put(4, 4);   // 去除鍵 1 ,1 和 3 的 cnt 相同,但 1 最久未使用// cache=[4,3], cnt(4)=1, cnt(3)=2
lfu.get(1);      // 返回 -1(未找到)
lfu.get(3);      // 返回 3// cache=[3,4], cnt(4)=1, cnt(3)=3
lfu.get(4);      // 返回 4// cache=[3,4], cnt(4)=2, cnt(3)=3

提示:

  • 1 <= capacity?<= 104
  • 0 <= key <= 105
  • 0 <= value <= 109
  • 最多調(diào)用?2 * 105?次?get?和?put?方法


其中?cnt?表示緩存使用的頻率,time?表示緩存的使用時(shí)間,key?和?value?表示緩存的鍵值。

題解:比較直觀的想法就是我們用哈希表?key_table?以鍵?key?為索引存儲(chǔ)緩存,建立一個(gè)平衡二叉樹(shù)?S?來(lái)保持緩存根據(jù)?(cnt,time)?雙關(guān)鍵字。還有一道類似的題LRU:146. LRU 緩存機(jī)制-CSDN博客

code:

class LFUCache {// 緩存容量,時(shí)間戳int capacity, time;Map<Integer, Node> key_table;TreeSet<Node> S;public LFUCache(int capacity) {this.capacity = capacity;this.time = 0;key_table = new HashMap<Integer, Node>();S = new TreeSet<Node>();}public int get(int key) {if (capacity == 0) {return -1;}// 如果哈希表中沒(méi)有鍵 key,返回 -1if (!key_table.containsKey(key)) {return -1;}// 從哈希表中得到舊的緩存Node cache = key_table.get(key);// 從平衡二叉樹(shù)中刪除舊的緩存S.remove(cache);// 將舊緩存更新cache.cnt += 1;cache.time = ++time;// 將新緩存重新放入哈希表和平衡二叉樹(shù)中S.add(cache);key_table.put(key, cache);return cache.value;}public void put(int key, int value) {if (capacity == 0) {return;}if (!key_table.containsKey(key)) {// 如果到達(dá)緩存容量上限if (key_table.size() == capacity) {// 從哈希表和平衡二叉樹(shù)中刪除最近最少使用的緩存key_table.remove(S.first().key);S.remove(S.first());}// 創(chuàng)建新的緩存Node cache = new Node(1, ++time, key, value);// 將新緩存放入哈希表和平衡二叉樹(shù)中key_table.put(key, cache);S.add(cache);} else {// 這里和 get() 函數(shù)類似Node cache = key_table.get(key);S.remove(cache);cache.cnt += 1;cache.time = ++time;cache.value = value;S.add(cache);key_table.put(key, cache);}}
}class Node implements Comparable<Node> {int cnt, time, key, value;Node(int cnt, int time, int key, int value) {this.cnt = cnt;this.time = time;this.key = key;this.value = value;}public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof Node) {Node rhs = (Node) anObject;return this.cnt == rhs.cnt && this.time == rhs.time;}return false;}public int compareTo(Node rhs) {return cnt == rhs.cnt ? time - rhs.time : cnt - rhs.cnt;}public int hashCode() {return cnt * 1000000007 + time;}
}

http://www.risenshineclean.com/news/5706.html

相關(guān)文章:

  • 系統(tǒng)測(cè)試包括哪些內(nèi)容魔貝課凡seo課程好嗎
  • 營(yíng)銷網(wǎng)絡(luò)是什么意思企業(yè)網(wǎng)站優(yōu)化軟件
  • 現(xiàn)在做網(wǎng)站一般做多寬怎么做微信推廣和宣傳
  • 網(wǎng)站系統(tǒng)問(wèn)題解決措施重慶seo網(wǎng)站建設(shè)
  • 網(wǎng)站開(kāi)發(fā)軟件培訓(xùn)企業(yè)網(wǎng)站建設(shè)方案論文
  • 域名和網(wǎng)站名不一樣百度推廣登錄平臺(tái)網(wǎng)址
  • 太湖云建站網(wǎng)站建設(shè)推廣普通話手抄報(bào)內(nèi)容50字
  • 做公司網(wǎng)站有什么亮點(diǎn)seo基礎(chǔ)培訓(xùn)
  • java高端網(wǎng)站建設(shè)成都網(wǎng)絡(luò)營(yíng)銷策劃
  • 門戶網(wǎng)站建設(shè)自查報(bào)告seo日常工作內(nèi)容
  • 做網(wǎng)站 公司有哪些互聯(lián)網(wǎng)營(yíng)銷平臺(tái)
  • 網(wǎng)站建設(shè)的運(yùn)用場(chǎng)景百度推廣管理平臺(tái)登錄
  • 企業(yè)做網(wǎng)站樂(lè)云seo快速上線2345網(wǎng)址導(dǎo)航桌面版
  • 洪湖自己的網(wǎng)站seo大牛
  • 官網(wǎng)站超鏈接怎么做優(yōu)就業(yè)seo
  • 做圖表用的網(wǎng)站優(yōu)化seo軟件
  • 網(wǎng)站關(guān)鍵詞代碼怎么做互聯(lián)網(wǎng)推廣有哪些方式
  • 威海高區(qū)有沒(méi)有建設(shè)局的網(wǎng)站uc搜索引擎入口
  • 簡(jiǎn)歷怎么制作網(wǎng)站新聞發(fā)稿
  • 如何做導(dǎo)航網(wǎng)站市場(chǎng)推廣怎么寫
  • 泉州企業(yè)網(wǎng)站維護(hù)制作域名歸屬查詢
  • 家庭寬帶怎么做網(wǎng)站網(wǎng)站如何宣傳推廣
  • 網(wǎng)站建設(shè) 徐州聯(lián)合早報(bào) 即時(shí)消息
  • seo建站是什么意思愛(ài)廷玖達(dá)泊西汀
  • 成都seo整站上海搜索引擎優(yōu)化1
  • 企業(yè)網(wǎng)站建設(shè)費(fèi)用定金怎么做賬官網(wǎng)排名優(yōu)化方案
  • 網(wǎng)站廣告形式合肥seo推廣公司哪家好
  • 百度網(wǎng)站下拉怎么做的怎么在百度上注冊(cè)店鋪
  • 上海專業(yè)制作網(wǎng)站口碑營(yíng)銷的案例及分析
  • 數(shù)碼產(chǎn)品網(wǎng)站建設(shè)百度seo優(yōu)化技巧