当前位置: 首页 > news >正文

模运算核心性质与算法应用:从数学原理到编程实践

目录

  • 🚀前言
  • 🌟数学性质:模运算的理论基石
    • 💯基本定义:余数的本质
    • 💯四则运算规则:保持同余性的关键
  • 🦜编程实践:模运算的工程化技巧
    • 💯避免数值溢出:分步取模是关键
    • 💯处理负数取模:确保结果非负
    • 💯大数幂取模:快速幂算法
    • 💯组合数取模:预计算阶乘与逆元
  • 🐧常见问题解决方案:一张表帮你避坑
  • 🚀总结:模运算的核心价值

🚀前言

大家好!我是 EnigmaCoder

  • 在算法设计与数论问题中,模运算(Modulo Operation)是处理大数、周期性问题和哈希计算的重要工具。本文从数学性质和编程实践两方面系统归纳模运算的核心知识,帮助读者在算法题中正确应用模运算。

🌟数学性质:模运算的理论基石

💯基本定义:余数的本质

若 (a \mod m = r),则存在整数 ( k ) 使得 (a = km + r),其中余数 ( r ) 满足 ( 0 \leq r < m )。核心作用:将整数映射到 ([0, m-1]) 的有限集合,用于简化运算或提取周期性规律。

💯四则运算规则:保持同余性的关键

模运算对加、减、乘、幂运算具有良好的封闭性,但除法需特殊处理。以下规则均需在最后一步对结果再次取模,确保余数在合法范围内:

运算公式示例(取模 5)
加法( (a + b) \mod m = [(a \mod m) + (b \mod m)] \mod m )( (7 + 8) \mod 5 = (2 + 3) \mod 5 = 0 )
减法( (a - b) \mod m = [(a \mod m) - (b \mod m) + m] \mod m )( (3 - 7) \mod 5 = (3 - 2 + 5) \mod 5 = 1 )
乘法( (a \times b) \mod m = [(a \mod m) \times (b \mod m)] \mod m )( (6 \times 7) \mod 5 = (1 \times 2) \mod 5 = 2 )
幂运算( a^k \mod m = [(a \mod m)^k] \mod m )( 3^{4} \mod 5 = (3^4) \mod 5 = 1 )

🦜编程实践:模运算的工程化技巧

💯避免数值溢出:分步取模是关键

在编程语言(如 C++)中,大数相乘可能导致中间结果溢出,必须在每一步运算后取模:

// 错误:直接相乘可能溢出  
long long ans = (a * b) % MOD;  // 正确:先对操作数取模,再相乘后取模  
long long ans = ((a % MOD) * (b % MOD)) % MOD;  

💯处理负数取模:确保结果非负

不同编程语言对负数取模的定义可能不同(如 Python 返回非负余数,C++ 可能返回负数),通用处理方法:

int mod_negative(int a, int MOD) {  return (a % MOD + MOD) % MOD; // 先调整为正数,再取模  
}  

示例:( (-7 \mod 5) ) 的结果为 (3),通过 ( (-7 % 5 + 5) % 5 ) 实现。

💯大数幂取模:快速幂算法

利用二进制拆分指数,将幂运算分解为多次平方和乘法,避免直接计算大数:

typedef long long ll;  
ll fast_pow(ll a, ll b, ll MOD) {  ll res = 1;  a %= MOD; // 先对底数取模  while (b > 0) {  if (b % 2 == 1) res = (res * a) % MOD; // 奇数指数时乘入结果  a = (a * a) % MOD; // 底数平方并取模  b /= 2; // 指数折半  }  return res;  
}  

💯组合数取模:预计算阶乘与逆元

在组合数学问题中,计算 ( C(n, k) \mod MOD ) 需预处理阶乘和逆元,避免重复计算:

const int MAXN = 1e5;  
ll fac[MAXN], inv_fac[MAXN], MOD = 1e9+7;  void precompute() {  fac[0] = 1;  for (int i=1; i<MAXN; i++)  fac[i] = fac[i-1] * i % MOD; // 预计算阶乘  // 计算最大阶乘的逆元(费马小定理)  inv_fac[MAXN-1] = fast_pow(fac[MAXN-1], MOD-2, MOD);  // 逆元递推(节省时间)  for (int i=MAXN-2; i>=0; i--)  inv_fac[i] = inv_fac[i+1] * (i+1) % MOD;  
}  // 计算组合数 C(n, k)  
ll C(int n, int k) {  if (k < 0 || k > n) return 0; // 边界条件  return fac[n] * inv_fac[k] % MOD * inv_fac[n-k] % MOD;  
}  

🐧常见问题解决方案:一张表帮你避坑

问题场景解决方案示例
大数连乘溢出每一步乘法后立即取模 res = (res * a) % MOD
负数的模运算先加模数再取模(-7 % 5 + 5) % 5 = 3
除法取模使用逆元转换为乘法(a / b) % MOD = a * inv(b)
幂次过大快速幂算法(分解指数为二进制)fast_pow(2, 1e18, MOD)
组合数取模预计算阶乘和逆元(线性时间预处理)预处理后单次查询 ( O(1) )

🚀总结:模运算的核心价值

  • 模运算通过 数学同余性 简化复杂计算,通过 编程技巧 解决工程实现问题。掌握其核心性质(尤其是逆元与快速幂)和防溢出、负数处理等细节,能高效解决大数运算、数论、动态规划等算法题中的模运算需求。在实际编码中,始终牢记:每一步运算后取模 是避免错误的黄金法则。
  • 无论是计算斐波那契数的周期性、求解线性同余方程,还是设计哈希函数,模运算都是算法工程师的必备工具。从理论到实践,扎实的基础能让你在面对复杂问题时游刃有余。

相关文章:

模运算核心性质与算法应用:从数学原理到编程实践

目录 &#x1f680;前言&#x1f31f;数学性质&#xff1a;模运算的理论基石&#x1f4af;基本定义&#xff1a;余数的本质&#x1f4af;四则运算规则&#xff1a;保持同余性的关键 &#x1f99c;编程实践&#xff1a;模运算的工程化技巧&#x1f4af;避免数值溢出&#xff1a;…...

使用 Messenger 跨进程通讯

在Android中使用Messenger进行跨进程通信&#xff08;IPC&#xff09;的步骤如下&#xff1a; 1. 服务端&#xff08;Service&#xff09;实现 1.1 创建Service并绑定Messenger public class MessengerService extends Service {private static final String TAG "Mess…...

css炫酷的3D水波纹文字效果实现详解

炫酷的3D水波纹文字效果实现详解 这里写目录标题 炫酷的3D水波纹文字效果实现详解项目概述技术栈核心实现1. 基础布局2. 渐变背景3. 文字效果实现3.1 基础样式3.2 文字漂浮动画 4. 水波纹效果4.1 模糊效果4.2 水波动画 5. 交互效果 技术要点项目难点与解决方案总结 项目概述 在…...

C++类的特殊成员函数:构造、拷贝构造与析构函数详解

目录 ​编辑一、构造函数 二、拷贝构造函数 三、析构函数 在C 编程中&#xff0c;类的特殊成员函数扮演着至关重要的角色&#xff0c;它们负责对象的创建、复制以及销毁过程。本文将深入探讨构造函数、拷贝构造函数和析构函数的概念、特性及应用场景&#xff0c;并结合代…...

ffmpeg常见命令3

文章目录 1. **文字水印&#xff08;Text Watermark&#xff09;**示例命令&#xff1a;更多选项&#xff1a; 2. **图片水印&#xff08;Image Watermark&#xff09;**示例命令&#xff1a;更多选项&#xff1a; 3. **画中画&#xff08;Picture-in-Picture, PIP&#xff09;…...

C# 中创建统一 API 接口实现方案

在 C# 中创建统一 API 接口需要从架构设计、技术选型和代码实现等多个层面进行规划。以下是详细的实现方案和完整示例代码&#xff1a; 一、技术选型与架构设计 框架选择 ASP.NET Core (6.0)RESTful API 规范 核心组件 统一响应格式&#xff1a;标准化 JSON 响应结构全局异常处…...

考研单词笔记 2025.04.04

accord n一致&#xff0c;符合&#xff0c;协议&#xff0c;条约v与…一致符合&#xff0c;给予&#xff0c;赠予 align v使一致&#xff0c;使对齐 alike a相同的&#xff0c;相似的ad相同地&#xff0c;相似地&#xff0c;同等地 analogous a类似的&#xff0c;相似的 co…...

leetcode 代码随想录 数组-区间和

题目 给定一个整数数组 Array&#xff0c;请计算该数组在每个指定区间内元素的总和。 输入&#xff1a; 第一行输入&#xff1a;为整数数组 Array 的长度 n&#xff0c;接下来 n 行&#xff0c;每行一个整数&#xff0c;表示数组的元素。随后的输入为需要计算总和的区间&…...

Linux学习笔记7:关于i.MX6ULL主频与时钟配置原理详解

以下是关于正点原子B站课程中 i.MX6ULL主频和时钟配置实验的博客内容框架与详细解析&#xff0c;结合实验原理、配置流程及关键代码实现&#xff0c;适合嵌入式开发者参考学习&#xff1a; 一、 实验背景 i.MX6ULL默认启动时由内部BootROM将主频设置为396MHz&#xff0c;但其…...

第三期:深入理解 Spring Web MVC [特殊字符](数据传参+ 特殊字符处理 + 编码问题解析)

✨前言&#xff1a;传参和状态管理&#xff0c;看似简单其实门道不少 在 Web 开发中&#xff0c;前端和后端最核心的交流方式就是“传参”&#xff0c;而“传参”除了涉及如何写代码获取参数&#xff0c;还藏着很多开发者容易忽略的细节&#xff1a; 为什么 URL 带了中文&…...

洛谷题单3-P1075 [NOIP 2012 普及组] 质因数分解-python-流程图重构

题目描述 已知正整数 n n n 是两个不同的质数的乘积&#xff0c;试求出两者中较大的那个质数。 输入格式 输入一个正整数 n n n。 输出格式 输出一个正整数 p p p&#xff0c;即较大的那个质数。 输入输出样例 输入 21输出 7说明/提示 1 ≤ n ≤ 2 1 0 9 1 \le n\…...

Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践

一、Vue组件化开发的核心优势 1.1 组件化架构的天然优势 Vue的组件系统是其最核心的特性之一&#xff0c;采用单文件组件&#xff08;.vue&#xff09;形式&#xff0c;将HTML、CSS和JavaScript组合在同一个文件中&#xff0c;形成高内聚、低耦合的代码单元。这种设计显著提升…...

ctfshow VIP题目限免 robots后台泄露

根据题目提示是 robots后台泄露&#xff0c;所以我们试着访问它的后台文件 robots.txt 访问之后发现了有一个/flagishere.txt 目录文件。接着拼接访问它发现了 flag...

突破传统认知:聚类算法的底层逻辑与高阶应用全景解析

一、维度革命&#xff1a;重新定义聚类分析的认知边界 在人工智能的浩瀚星空中&#xff0c;聚类算法犹如一组精密的星际导航仪&#xff0c;帮助我们在无序的数据宇宙中发现隐藏的秩序。这项起源于人类本能分类需求的技术&#xff0c;经历了从简单分组到智能识别的蜕变&#xf…...

获取ssh密钥

git bash GitHub官网: Redirecting… ssh-keygen -t rsa -C “git账号” 出现id_rsa.pub 登录github添加 将id_rsa.pub中内容复制 点击SSH and GPG keys 点击New SSH key 起个名字 将id_rsa.pub中内容复制到这里 报错&#xff1a; ssh: connect to host github.com port 2…...

MINIQMT学习课程Day7

在上一篇&#xff0c;我们安装好xtquant&#xff0c;qmt以及python后&#xff0c;这一章&#xff0c;我们学习如何使用xtquant 本章学习&#xff0c;如何获取账号的资金使用状况。 首先&#xff0c;打开qmt&#xff0c;输入账号密码&#xff0c;选择独立交易。 进入交易界面&…...

`accept_ra` 和 `autoconf` 和 `forwarding` 的关系 笔记250404

accept_ra 和 autoconf 和 forwarding 的关系 笔记250404 在 Linux 的 IPv6 网络配置中&#xff0c;accept_ra、autoconf 和 forwarding 是三个密切相关的核心参数&#xff0c;它们的组合直接影响设备在网络中的角色&#xff08;主机或路由器&#xff09;和地址配置行为。以下是…...

leetcode数组-二分查找

题目 题目链接&#xff1a;https://leetcode.cn/problems/binary-search/ 文章讲解&#xff1a;https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1fA4y1o715 给定一个 n 个元素有序的&…...

vector的介绍与代码演示

由于以后我们写OJ题时会经常使用到vector&#xff0c;所以我们必不可缺的是熟悉它的各个接口。来为我们未来作铺垫。 首先&#xff0c;我们了解一下&#xff1a; https://cplusplus.com/reference/vector/ vector的概念&#xff1a; 1. vector是表示可变大小数组的序列容器…...

SDK中窗口调用

存在窗口A和B的win32程序 , 当点击窗口A中的按钮后会弹出窗口B #include <windows.h>// 窗口 B 的窗口过程 LRESULT CALLBACK WindowProcB(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {switch (uMsg) {case WM_DESTROY:PostQuitMessage(0);break;default:ret…...

Web Service技术

Web Service 是一种基于网络的、分布式的技术&#xff0c;用于在不同的应用程序之间进行通信和数据交换。以下是关于它的详细介绍&#xff1a; 定义与概念 Web Service 是一种通过互联网协议&#xff08;如 HTTP&#xff09;提供服务的软件组件&#xff0c;它使用标准的 XML …...

使用内存数据库来为mapper层的接口编写单元测试

简介 使用内存数据库来测试mapper层的sql代码&#xff0c;这种方式可以让测试案例摆脱对数据库的依赖&#xff0c;进而变得可重复执行。 这里选择的内存数据库是h2&#xff0c;它是纯java编写的关系型数据库&#xff0c;开源免费&#xff0c;而且轻量级的&#xff0c;性能较好…...

PowerMonitor的使用步骤

PowerMonitor是功耗分析中常用的测试和分析工具&#xff0c;不仅精度高&#xff0c;而且遇到需要找方案提功耗单的时候&#xff0c;有时还需要PowerMonitor的数据作为辅助日志。 1.先接上假电池正负极&#xff0c;再按PowerMonior的电源键 2.桌面点击PowerMonitor快捷图标 3.调…...

【C++经典例题】杨辉三角问题

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;C经典例题 期待您的关注 目录 一、问题描述 二、解题思路 解法 1 思路 解法 2 思路 三、代码实现 解法 1 代码 解法 2 代码…...

java自主学习网站(springboot+ssm+mysql)含运行文档

java自主学习网站(springbootssmmysql)含运行文档 该系统是一个专注于Java编程的在线教育平台。系统的主要功能和特点如下&#xff1a; 导航栏&#xff1a;系统顶部设有导航栏&#xff0c;用户可以通过它快速访问不同的页面&#xff0c;包括首页、课程列表、分享资料列表、讲…...

T-SQL语言的链表查找

T-SQL语言的链表查找 在数据库系统中&#xff0c;数据结构的选择对性能优化至关重要。链表作为一种常见的数据结构&#xff0c;具有灵活性和动态存储的优势。尽管在SQL数据库中&#xff0c;传统的表结构已经足够应对大多数场景&#xff0c;但在某些情况下&#xff0c;将链表的…...

浅析 Spring AI 与 Python:企业级 AI 开发的技术分野

一、技术架构与生态体系对比 Spring AI 构建在 Spring Boot 生态之上&#xff0c;其核心架构包含以下模块&#xff1a; 模型适配层&#xff1a;通过统一 API 支持 OpenAI、Anthropic、Hugging Face 等主流模型提供商&#xff0c;实现跨平台模型调用。例如&#xff0c;调用 Cl…...

为 IDEA 设置管理员权限

IDEA 安装目录 兼容性选择管理员身份运行程序 之后 IDEA 中的操作&#xff08;包括终端中的操作&#xff09;都是管理员权限的了...

数据结构|排序算法(一)快速排序

一、排序概念 排序是数据结构中的一个重要概念&#xff0c;它是指将一组数据元素按照特定的顺序进行排列的过程&#xff0c;默认是从小到大排序。 常见的八大排序算法&#xff1a; 插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序、基数排序 二、快速…...

如何计算财富自由所需要的价格?

写在前面&#xff1a;​【财富自由计算器】已上线&#xff0c;快算算财富自由要多少​ 多少钱&#xff0c;才能实现你的财富梦想&#xff1f; 需要多少&#xff0c;才能实现财务安全、财务独立&#xff0c;甚至财务自由&#xff1f; 看到结尾&#xff0c;你会很清楚地看到&…...

南京大学与阿里云联合启动人工智能人才培养合作计划,已将通义灵码引入软件学院课程体系

近日&#xff0c;南京大学与阿里云宣布启动人工智能人才培养合作计划&#xff0c;共同培养适应未来技术变革、具备跨学科思维的AI创新人才。 基于阿里云在云计算和AI大模型领域的技术优势和南京大学在人工智能领域的学科优势&#xff0c;双方将共同设计兼具前瞻性和应用性的人…...

基于 Python 的自然语言处理系列(70):检索增强生成(RAG)

1. 什么是 RAG&#xff1f; 在许多大模型&#xff08;LLM&#xff09;应用场景中&#xff0c;我们需要使用特定的用户数据&#xff0c;而这些数据并未包含在模型的训练集中。检索增强生成&#xff08;Retrieval Augmented Generation&#xff0c;RAG&#xff09;是一种有效的解…...

Flink CDC Pipeline mysql to doris

flink 与 flink-cdc版本兼容 运行同步程序 最终在 flink-1.20.1 与 flink-cdc-3.1.1 跑通测试 配置yaml文件 [rootchb1 flink-cdc-3.1.1]# cat mysql2doris.yaml ################################################################################ # Description: Sync…...

计算机网络-TCP的拥塞控制

内容来源&#xff1a;小林coding 本文是对小林coding的TPC拥塞控制的精简总结 为什么要有拥塞控制&#xff1f; 前面的流量控制是避免「发送方」的数据填满「接收方」的缓存&#xff0c;但是并不知道网络的中发生了什么 计算机网络都处在一个共享的环境&#xff0c;因此也…...

ArkTs的UI装饰器(自定义组件生命周期、页面组件生命周期、所有UI装饰器使用及示例)

目录 自定义组件定义 UI装饰器 @Component(V1) 自定义组件生命周期 freezeWhenInactive11+ @Entry(通用) 页面组件生命周期 EntryOptions10+ Component、Entry示例 @Reusable(V1) @Builder(通用) @BuilderParam(通用) 参数 引用传递示例 this指向 尾随…...

#管理Node.js的多个版本

在 Windows 11 上管理 Node.js 的多个版本&#xff0c;最方便的方法是使用 nvm-windows&#xff08;Node Version Manager for Windows&#xff09;。它允许你轻松安装、切换和管理多个 Node.js 版本。 &#x1f4cc; 方法 1&#xff1a;使用 nvm-windows&#xff08;推荐 ✅&a…...

Transformer由入门到精通(一):基础知识

基础知识 0 前言1 EncoderDecoder2 Bahdanau Attention3 Luong Attention4 Self Attention/Masked Self Attention5 MultiHead Self Attention6 Key-Value Attention7 ResNet8 总结 0 前言 我之前看transformer的论文《Attention Is All You Need》&#xff0c;根本看不懂&…...

Windows安装Node.js+Express+Nodemon

Windows安装Node.jsExpressNodemon 陈拓 2025/4/3-2025/4/4 1. 概述 在《Node.jsExpressNodemonSocket.IO构建Web实时通信》 https://blog.csdn.net/chentuo2000/article/details/134651743?spm1001.2014.3001.5502 一文中我们介绍了在Linux系统上的安装过程&#xff0c;本…...

关于JVM和OS中的指令重排以及JIT优化

关于JVM和OS中的指令重排以及JIT优化 前言&#xff1a; 这东西应该很重要才对&#xff0c;可是大多数博客都是以讹传讹&#xff0c;全是错误&#xff0c;尤其是JVM会对字节码进行重排都出来了&#xff0c;明明自己测一测就出来的东西&#xff0c;写出来误人子弟… 研究了两天&…...

LeetCode hot 100—柱状图中最大的矩形

题目 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a;最…...

从代码学习深度学习 - GRU PyTorch版

文章目录 前言一、GRU模型介绍1.1 GRU的核心机制1.2 GRU的优势1.3 PyTorch中的实现二、数据加载与预处理2.1 代码实现2.2 解析三、GRU模型定义3.1 代码实现3.2 实例化3.3 解析四、训练与预测4.1 代码实现(utils_for_train.py)4.2 在GRU.ipynb中的使用4.3 输出与可视化4.4 解析…...

重要头文件下的函数

1、<cctype> #include<cctype>加入这个头文件就可以调用以下函数&#xff1a; 1、isalpha(x) 判断x是否为字母 isalpha 2、isdigit(x) 判断x是否为数字 isdigit 3、islower(x) 判断x是否为小写字母 islower 4、isupper(x) 判断x是否为大写字母 isupper 5、isa…...

JSON-lib考古现场:在2025年打开赛博古董店的奇妙冒险

各位在代码海洋里捡贝壳的探险家们&#xff01;今天我们要打开一个尘封的Java古董箱——JSON-lib&#xff01;这货可是2003年的老宝贝&#xff0c;比在座很多程序员的工龄还大&#xff01;准备好穿越回Web 1.0时代&#xff0c;感受XML统治时期的余晖了吗&#xff1f; &#x1f…...

实操日志之Windows Server2008R2 IIS7 配置Php7.4.3

Windows7IIS7PHPMySQL - 适用于&#xff08;2008 R2 / 8 / 10&#xff09; 配置需求 操作系统&#xff1a;windows2008IIS版本&#xff1a;7.0 PHP版本&#xff1a;7.4.3 MySQL版本&#xff1a;5.7.12 及以上第一步&#xff1a; 安装 IIS 默认”Internet 信息服务“打勾安…...

Paraformer和SenseVoice模型训练

0.数据准备 如果是训练paraformer模型&#xff0c;我们只需要准备train_wav.scp和train_text.txt以及验证集val_wav.scp和val_text.txt即可。 如果是训练SenseVoice模型&#xff0c;我们需要准备下面几个文件&#xff1a; train_text.txt train_wav.scp train_text_language.…...

Axure数据可视化科技感大屏设计资料——赋能多领域,展示无限价值

可视化大屏如何高效、直观地展示数据&#xff0c;并将其转化为有价值的决策依据&#xff0c;成为了许多企业和组织面临的共同挑战。Axure大屏可视化模板&#xff0c;作为一款强大的数据展示工具&#xff0c;正在以其出色的交互性和可定制性&#xff0c;赋能多个领域&#xff0c…...

C# Winform 入门(7)之简单的抽奖系统邮件

由于比较喜欢英语&#xff0c;这里就把汉字属性名都改成英语了 声明变量&#xff0c;生成随机数 int key 0;Random random new Random(); 窗体加载 private void Form1_Load(object sender, EventArgs e) {timer1.Enabledfalse; } 开始按钮 private void txt_begin_Click(ob…...

scala编程语言

一、抽象类 1、抽象属性和抽象方法 1&#xff09;基本语法 &#xff08;1&#xff09;定义抽象类&#xff1a;abstract class Person{} //通过 abstract 关键字标记抽象类 &#xff08;2&#xff09;定义抽象属性&#xff1a;val|var name:String //一个属性没有初始化&#xf…...

光流 | Farneback、Horn-Schunck、Lucas-Kanade、Lucas-Kanade DoG四种光流算法对比(附matlab源码)

🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅 以下是对四种光流算法的对比分析及MATLAB验证方案,包含原理说明、应用场景和可执行代码🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅 🍓🍓🍓🍓🍍🍍🍍🍍🍍🍍🍍🍍🍍🍍…...

146. LRU 缓存 带TTL的LRU缓存实现(拓展)

LRU缓存 方法一:手动实现双向链表 哈希表 struct Node{int val;int key;Node* prev;Node* next;Node(int a, int b): key(a), val(b), prev(nullptr), next(nullptr) {}Node():key(0), val(0), prev(nullptr), next(nullptr) {} }; class LRUCache { private:Node* removeTai…...