LFU 缓存 -- LinkedHashSet
相关题目:
460. LFU 缓存
相关文章
LRU 缓存 – 哈希链表
# 460. LFU 缓存
# Python中和 LinkedHashSet 相似的数据结构 OrderedDict
from collections import OrderedDict
class LFUCache:# key 到 val 的映射,我们后文称为 KV 表keyToVal = {}# key 到 freq 的映射,我们后文称为 KF 表keyToFreq = {}# freq 到 key 列表的映射,我们后文称为 FK 表freqToKeys = {}# 记录最小的频次minFreq = 0# 记录 LFU 缓存的最大容量cap = 0def __init__(self, capacity: int):self.keyToVal = {}self.keyToFreq = {}self.freqToKeys = {}self.cap = capacityself.minFreq = 0def get(self, key: int) -> int:if key not in self.keyToVal:return -1# 增加 key 对应的 freqself.increaseFreq(key)return self.keyToVal[key]def put(self, key: int, val: int) -> None:if self.cap <= 0:return# 若 key 已存在,修改对应的 val 即可if key in self.keyToVal:self.keyToVal[key] = val# key 对应的 freq 加一self.increaseFreq(key)return# key 不存在,需要插入# 容量已满的话需要淘汰一个 freq 最小的 keyif self.cap <= len(self.keyToVal):self.removeMinFreqKey()# 插入 key 和 val,对应的 freq 为 1# 插入 KV 表self.keyToVal[key] = val# 插入 KF 表self.keyToFreq[key] = 1# 插入 FK 表self.freqToKeys.setdefault(1, OrderedDict())self.freqToKeys[1].setdefault(key)# 插入新 key 后最小的 freq 肯定是 1self.minFreq = 1def removeMinFreqKey(self):# freq 最小的 key 列表keyList = self.freqToKeys.get(self.minFreq)# 其中最先被插入的那个 key 就是该被淘汰的 keydeletedKey = next(iter(keyList))# 更新 FK 表keyList.pop(deletedKey)if not keyList:self.freqToKeys.pop(self.minFreq)# 问:这里需要更新 minFreq 的值吗?# 更新 KV 表self.keyToVal.pop(deletedKey)# 更新 KF 表self.keyToFreq.pop(deletedKey)def increaseFreq(self, key: int) -> None:freq = self.keyToFreq[key]# 更新 KF 表self.keyToFreq[key] = freq + 1# 更新 FK 表# 将 key 从 freq 对应的列表中删除self.freqToKeys[freq].pop(key)# 将 key 加入 freq + 1 对应的列表中self.freqToKeys.setdefault(freq + 1, OrderedDict())self.freqToKeys[freq + 1].setdefault(key)# 如果 freq 对应的列表空了,移除这个 freqif not self.freqToKeys[freq]:del self.freqToKeys[freq]# 如果这个 freq 恰好是 minFreq,更新 minFreqif freq == self.minFreq:self.minFreq += 1相关文章:
LFU 缓存 -- LinkedHashSet
相关题目: 460. LFU 缓存 相关文章 LRU 缓存 – 哈希链表 # 460. LFU 缓存 # Python中和 LinkedHashSet 相似的数据结构 OrderedDict from collections import OrderedDict class LFUCache:# key 到 val 的映射,我们后文称为 KV 表keyToVal {}# key 到…...
用IDEA操作数据库--MySQL
IDEA集成了DataGrip的操作数据库的功能 就可以省略我们下载SQLyog/Navicat/DataGrip这些图形化操作工具了 以下是IDEA的使用 输入数据库的用户和密码...
扫雷游戏的递归解法
目录 一,题目 二,题目接口 三,解题思路 四,解题代码 一,题目 让我们一起来玩扫雷游戏! 给你一个大小为 m x n 二维字符矩阵 board ,表示扫雷游戏的盘面,其中: M 代表一…...
java练习 day5
一、Nim 游戏 1、题目链接 点击跳转到题目位置 2、代码 class Solution {public boolean canWinNim(int n) {if(n % 4 0){return false;}return true;} }3、知识点 (1) 通过模拟来寻找 规律。 二、区域和检索 - 数组不可变 1、题目链接 点击跳转到题目位置 2、代码 …...
腾讯云轻量和CVM有啥区别?怎么选择服务器配置?
腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…...
服务器or虚拟机安装SSH和虚拟机or服务器设置远程服务权限
第一步 服务器/虚拟机安装SSH工具,这是外部SSH终端连接服务器/虚拟机的第一步! sudo apt update && sudo apt upgrade#更新apt sudo apt install openssh-server#安装SSH工具 service ssh status#查看SSh运行状态 sudo systemctl enable --now ssh#运行SSH工具第二步…...
Sentinel入门
文章目录 初始Sentinel雪崩问题服务保护技术对比认识Sentinel微服务整合Sentinel 限流规则快速入门流控模式关联模式链路模式 流控效果warm up排队等待 热点参数限流全局参数限流热点参数限流 隔离和降级FeignClient整合Sentinel线程隔离熔断降级慢调用异常比例、异常数 授权规…...
Mac解压缩软件BetterZip免费版注册码下载
软件介绍 BetterZip免费版是一款适用于Mac系统的解压缩软件,软件具备了专业、实用、简单等特点,它可以让用户更快捷的向压缩文件中添加和删除文件,同时兼容性也十分优秀,支持ZIP , SIT , TAR、BZIP2 &…...
在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33
一、安装apache和php 最近在学习网站搭建。其中有一项内容是在windows操作系统里搭建apachephp环境。几天前根据一本书的上的说明尝试了一下,在win10操作系统里安装这两个软件:apache2.4.41和php7.4.29,安装以后apche能正常启动,…...
云服务仿真:完全模拟 AWS 服务的本地体验 | 开源日报 No.45
localstack/localstack Stars: 48.7k License: NOASSERTION LocalStack 是一个云服务仿真器,可以在您的笔记本电脑或 CI 环境中以单个容器运行。它提供了一个易于使用的测试/模拟框架,用于开发云应用程序。主要功能包括: 在本地机器上完全…...
css实现不规则图片文字环绕效果
依旧,先上效果图,可以看见,文字环绕这个椭圆形的图片, 依旧是遵循开源精神,代码就直接放下面了 (点个赞或者给个评论啥的吧,我就发现我的文章全是光看不点赞,不评论的的) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&quo…...
Day-05 CentOS7.5 安装 Docker
参考 : Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…...
激光雷达:自动驾驶的眼睛
激光雷达:自动驾驶的眼睛 文章目录 引言激光雷达的原理自动驾驶中的应用激光雷达的优势激光雷达的挑战结论结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的PnC培…...
Scratch3.0下载
通俗易懂,直接上链接 链接:https://pan.baidu.com/s/1n-QFEQWT8im8BHQu1wIjtg?pwd1016 提取码:1016...
多功能频率计周期/脉宽/占空比/频率测量verilog,视频/代码
名称:多功能频率计周期、脉宽、占空比、频率测量verilog 软件:Quartus 语言:Verilog 代码功能: 多功能频率计,可测量信号的周期、脉冲宽度、占空比、频率,语言为verilog,quartus软件设计仿真…...
img标签src动态绑定资源失败问题
img标签src动态绑定资源失败问题 需要采用require的方式进行 在 Vue 中,require 是一个通用的模块加载函数,用于在运行时(客户端或服务器端)引入模块。它通常用于加载 JavaScript 文件、JSON 数据、静态资源等。 组件使用…...
【自学笔记】网络安全——黑客技术
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...
Rust 技术文档及详细使用命令
概述 Rust 是一种现代、安全、并发、高性能的系统级编程语言。它与其他语言相比具有许多独特的特性,例如内存安全、所有权系统和生命周期等,使得它成为编写可靠和高效软件的理想选择。 本文档将介绍 Rust 的基本概念、语法、工具以及常用命令ÿ…...
建立HTTP代理IP池的技术和工具支持
建立HTTP代理IP池需要多种技术和工具支持,包括代理服务器、IP地址池、IP地址验证、数据库技术、网络安全技术、IP地址获取工具、IP地址验证工具、数据库管理工具、网络安全工具和自动化工具等。 代理服务器 代理服务器是HTTP代理IP池的核心组成部分,它可…...
【机器学习】数据格式csv/txt/pkl
文章目录 序言1. 数据存成csv、txt还是pkl2. pandas怎么读取csv、txt文件或者pkl文件3. 数据格式:pkl文件补充介绍 序言 用什么格式存储场景挖掘得到的数据目前为止用到过的一些数据存储格式,如proto/xml/json/txt/csv等,还有pkl,…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
