leetcode-設計LRU緩存結構-112

題目要求
在這里插入圖片描述

思路
雙鏈表+哈希表
代碼實現

struct Node{int key, val;Node* next;Node* pre;Node(int _key, int _val): key(_key), val(_val), next(nullptr), pre(nullptr){}
};class Solution {
public:
unordered_map<int, Node*> hash;
Node* head;
Node* tail;
int cap;
int size;Solution(int capacity){size = 0;cap = capacity;head = nullptr;tail = nullptr;hash.clear();}void removetohead(Node* p)
{if(p == head)return;p->pre->next = p->next;if(p == tail)tail = p->pre;elsep->next->pre = p->pre;p->next = head;p->pre = nullptr;head->pre = p;head = p;return;
}int get(int key) {if(hash.find(key) == hash.end())return -1;removetohead(hash[key]);return hash[key]->val;}void set(int key, int val){if(hash.find(key) != hash.end()){hash[key]->val = val;removetohead(hash[key]);}else {if(size < cap) {Node* p = new Node(key, val);if(head == nullptr)head = tail = p;else {head->pre = p;p->next = head;head = p;}hash[key] = head;size++;}else{int k = tail->key;hash.erase(k);tail->key = key;tail->val = val;removetohead(tail);hash[key] = head;}}}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13789.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

普源DHO924示波器OFFSET設置

一、簡介 示波器是電子工程師常用的測量工具之一&#xff0c;能夠直觀地顯示電路信號的波形和參數。普源DHO924是一款優秀的數字示波器&#xff0c;具有優異的性能和易用性。其中OFFSET功能可以幫助用戶調整信號的垂直位置&#xff0c;使波形更清晰易讀。本文將詳細介紹DHO924…

專注于運動控制芯片、運動控制產品研發、生產與銷售為一體的技術型芯片代理商、方案商——青牛科技

深圳市青牛科技實業有限公司,是專注于運 動控制芯片、運動控制產品研發、生產與銷售為一體的技術型 芯片代理商、方案商。現今代理了國產品牌GLOBALCHIP&#xff0c;芯谷&#xff0c;矽普&#xff0c;TOPPOWER等品牌。其中代理品牌TOPPOWER為電源模塊&#xff0c;他們公司通過了…

cherry-pick的強大之處在于哪里

git cherry-pick 的強大之處在于它提供了一種靈活的方式來應用特定的提交到不同的分支上&#xff0c;而無需合并整個分支或拉取其他不需要的提交。以下是 git cherry-pick 的幾個主要優點和強大之處&#xff1a; 選擇性應用提交&#xff1a;你可以挑選一個或多個特定的提交&…

聲音轉文本(免費工具)

聲音轉文本&#xff1a;解鎖語音技術的無限可能 在當今這個數字化時代&#xff0c;信息的傳遞方式正以前所未有的速度進化。從手動輸入到觸控操作&#xff0c;再到如今的語音交互&#xff0c;技術的發展讓溝通變得更加自然與高效。聲音轉文本&#xff08;Speech-to-Text, STT&…

Plant Simulation驗證AGV算法

Plant Simulation驗證算法也是非常高效且直觀的&#xff0c;一直以來波哥在迭代算法的時候圖形顯示這塊都是使用Openframeworks去做&#xff0c;效果還是非常不錯的。 這里簡要介紹一下openFrameworks&#xff0c;openFrameworks是一個開源的、跨平臺的 C 工具包。旨在開發實時…

LeetCode hot100-49-N

236. 二叉樹的最近公共祖先 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個節點 p、q&#xff0c;最近公共祖先表示為一個節點 x&#xff0c;滿足 x 是 p、q 的祖先且 x 的深度盡可能大&#xff08;…

爬蟲學習--12.MySQL數據庫的基本操作(下)

MySQL查詢數據 MySQL 數據庫使用SQL SELECT語句來查詢數據。 語法&#xff1a;在MySQL數據庫中查詢數據通用的 SELECT 語法 SELECT 字段1&#xff0c;字段2&#xff0c;……&#xff0c;字段n FROM table_name [WHERE 條件] [LIMIT N] 查詢語句中你可以使用一個或者多個表&…

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json 出現這個問題是因為打開的文件地址不對&#xff0c;解決這個問題首先我們要查看是否有unpackage文件夾&#xff0c;如果有&#xff0c;項目直接指向unpackage\dist\dev\…

vue3使用mitt.js進行各種組件間通信

我們在vue工程中&#xff0c;除開vue自帶的什么父子間&#xff0c;祖孫間通信&#xff0c;還有一個非常方便的通信方式&#xff0c;類似Vue2.x 使用 EventBus 進行組件通信&#xff0c;而 Vue3.x 推薦使用 mitt.js。可以實現各個組件間的通信 優點&#xff1a;首先它足夠小&…

【云原生】Kubeadm部署k8s

目錄 一、部署步驟 二、部署kubernetes 2.1、所有節點關閉防火墻 核心防護 iptables規則 swap交換 2.2、修改主機名并添加主機映射 2.3、調整內核參數 三、安裝Docker 3.1、所有節點安裝docker 3.2、所有接點添加鏡像加速器 3.3、開啟docker、并設置開機自啟、查看狀態…

ESP32學習筆記:WS2812B驅動

WS2812B是一款貼片RGB燈。由于采用了單總線通訊&#xff0c;所以需要特別關注下它的通訊時序。 調試細節&#xff1a; 本來以為會是一個比較簡單的調試&#xff0c;結果還是花了很長時間才調試完成。 首先是關于ESP32的納秒級延時確定&#xff0c;當時按照空指令始終調試不出來…

Linux中的計劃任務(crontab)詳解

&#x1f407;明明跟你說過&#xff1a;個人主頁 &#x1f3c5;個人專欄&#xff1a;《Linux &#xff1a;從菜鳥到飛鳥的逆襲》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目錄 一、前言 1、Linux的起源與發展 2、什么是計劃任務&#xf…

超詳細的前后端實戰項目(Spring系列加上vue3)(一步步實現+源碼)前端篇(一)

最近想著一步步搭建一個前后端項目&#xff0c;將每一步詳細的做出來。&#xff08;如果有不足或者建議&#xff0c;也希望大佬們指出哦&#xff09; 前端初始化 1.根據vue腳手架創建vue項目 這里可以用很多方法創建vue項目&#xff0c;大家看著創建吧&#xff0c;只要能創建…

k8s 部署mqtt簡介

在Kubernetes&#xff08;K8s&#xff09;中部署MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;服務通常涉及以下幾個步驟&#xff1a; 選擇MQTT Broker MQTT Broker是MQTT消息傳遞的中間件。流行的MQTT Broker包括Mosquitto, HiveMQ, EMQ X等。你需要選擇一…

機器學習面試問題總結 | 貝葉斯網絡

本文給大家帶來的百面算法工程師是機器學習中貝葉斯網路面試總結&#xff0c;文章內總結了常見的提問問題&#xff0c;旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中&#xff0c;我們還將介紹一些常見的面試問題&#xff0c;并提供參考的回答及其理論基礎&#…

K8S Secret管理之SealedSecrets

1 關于K8S Secret 我們通常將應用程序使用的密碼、API密鑰保存在K8S Secret中&#xff0c;然后應用去引用。對于這些敏感信息&#xff0c;安全性是至關重要的&#xff0c;而傳統的存儲方式可能會導致密鑰在存儲、傳輸或使用過程中受到威脅&#xff0c;例如在git中明文存儲密碼…

FreeRTOS_事件組_學習筆記

事件組 原文鏈接 事件組是一個整數&#xff0c;其中的高8位留給內核&#xff0c;只能用其他位來表示時間 每一位代表一個事件&#xff0c;且每個時間的含義由程序員決定 1為發生&#xff0c;0為未發生 一個/多個任務或ISR都能讀寫這些位 可以等待某一位&#xff0c;也可以等待…

如何理解合約中的引用類型(3)——Mapping

映射&#xff08;mapping&#xff09; 聲明形式&#xff1a;mapping(key type > value type)keytype可以是除枚舉外的幾乎任何基本類型&#xff0c;包括bytes和string&#xff0c;不包括用戶自定義的復雜類型-合約&#xff0c;枚舉&#xff0c;結構&#xff0c;映射value t…

簡單美觀易上手的 Docker Compose 可視化管理器 Dockge

本文首發于只抄博客&#xff0c;歡迎點擊原文鏈接了解更多內容。 前言 Dockge 是 Uptime Kuma 作者的新作品&#xff0c;因此 UI 風格與 Uptime Kuma 基本一致&#xff0c;如果你正在使用 Uptime Kuma 的話&#xff0c;那么 Dockge 的 UI 設計應該也不會讓你失望。Dockge 主打…

智慧校園為高校帶來哪些價值

在21世紀的教育圖景中&#xff0c;"智慧"不再僅僅是一個科技名詞&#xff0c;它已成為衡量教育現代化水平的重要標志。智慧校園&#xff0c;這一融合了物聯網、大數據、云計算等先進技術的教育新形態&#xff0c;正逐步成為高校轉型升級的關鍵驅動力。本文將從多個維…