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

18-动规-子序列中的 k 种字母(中等)

题目

来源

28. 子序列中的 k 种字母(第一期模拟笔试)

思路


基本分析 

子序列的定义

子序列是从原序列中选取部分元素,同时保持这些元素在原序列中的相对顺序所形成的新序列。也就是说,子序列中的元素不需要在原序列中连续出现,但它们的先后顺序必须和原序列一致。例如,对于字符串 "abc",它的子序列有 "","a","b","c","ab","ac","bc","abc"。

输入要求
  • 第一行输入包含两个整数 n 和 k,其中 n 表示字符串的长度(范围是 1 ≤ n ≤ 1000),k 表示符合要求的子序列中需要包含的不同字母的种类数(范围是 1 ≤ k ≤ 26)。
  • 第二行输入是一个长度为 n 的仅由小写字母组成的字符串。
输出要求

需要输出一个整数,表示该字符串中恰好包含 k 种不同字母的子序列的数量。由于结果可能非常大,需要将答案对 10^9 + 7 取模后再输出。

动态规划思路分析

为什么使用动态规划

动态规划适用于解决具有重叠子问题和最优子结构性质的问题。在本题中,要计算包含 k 种字母的子序列数量,可以通过逐步计算包含较少字母种类的子序列数量,进而推导出包含更多字母种类的子序列数量,符合动态规划的应用场景。

动态规划的具体思路
  1. 定义状态
    定义 dp[j] 表示恰好包含 j 种不同字母的子序列的数量。初始时,dp[0] = 1,因为空序列可以看作是包含 0 种字母的子序列。

  2. 状态转移
    对于字符串中的每个字母,我们考虑它对 dp 数组的影响。假设当前处理到第 i 个字母(这里 i 是字母在字母表中的索引,范围是 0 到 25),其出现的次数为 cnt[i]

    • 我们先计算出当前字母的非空子序列的数量 b
    • 然后从 k 到 1 倒序遍历 dp 数组,对于每个 j,更新 dp[j] 的值。具体来说,dp[j] 要加上 dp[j - 1] * b,这是因为我们可以将当前字母的非空子序列添加到已经包含 j - 1 种字母的子序列中,从而得到包含 j 种字母的新子序列。
  3. 最终结果
    经过对所有字母的处理后,dp[k] 就表示恰好包含 k 种不同字母的子序列的数量。


为什么 pow(2, cnt[i], mod) 表示当前字母的所有子序列的数量(包括空序列)

假设一个字母在字符串中出现了 cnt[i] 次。对于这个字母的每一次出现,在构成子序列时,我们都有两种选择:要么选择该次出现的字母加入子序列,要么不选择。

例如,当一个字母出现 1 次时,有 2 种选择:选这个字母(子序列为该字母本身)或者不选(子序列为空)。

当一个字母出现 2 次时,对于第一次出现有 2 种选择(选或不选),对于第二次出现同样有 2 种选择。根据乘法原理,总的选择方案数就是 2 * 2 = 2^2 种,分别是 "","a","a","aa"(这里假设字母是"a")。

以此类推,当一个字母出现 cnt[i] 次时,总的选择方案数就是 2 * 2 * ... * 2 = 2^cnt[i] 种,这就表示了该字母的所有子序列的数量,包括空序列。

在代码中,使用 pow(2, cnt[i], mod) 是为了避免在计算 2^cnt[i] 时出现数值溢出的问题,通过取模运算保证结果在合理范围内。同时,为了得到非空子序列的数量,我们需要将总的子序列数量减去 1(即减去空序列这一种情况),所以有 b = (pow(2, cnt[i], mod) - 1) % mod


pow(2, cnt[i], mod) 

pow(2, cnt[i], mod) 是 Python 内置函数 pow() 的一个应用,它的作用是高效地计算 2 的 cnt[i] 次幂并对 mod 取模


为什么要从 k 到 1 倒序遍历 dp 数组?

在这个动态规划问题里,从 k 到 1 倒序遍历 dp 数组是为了避免在更新 dp 数组时出现重复计算的问题,确保每个状态在更新时使用的是上一轮循环的旧值,下面详细解释其中的原因。

动态规划状态转移方程

在本题的动态规划中,状态转移方程为 dp[j] += dp[j - 1] * b,这里的 dp[j] 表示恰好包含 j 种不同字母的子序列的数量,b 是当前字母的非空子序列的数量。此方程的含义是,把当前字母的非空子序列添加到已经包含 j - 1 种字母的子序列里,从而得到包含 j 种字母的新子序列。


为什么最外层循环是# 遍历每个字母 for i in range(26)

在这个动态规划问题里,最外层循环 for i in range(26) 的作用是遍历 26 个小写英文字母,进而逐个考虑每个字母对最终结果的影响,下面详细解释这样做的原因。

问题本质与字母的影响

本题的目标是计算给定字符串中恰好包含 k 种不同字母的子序列的数量。在动态规划的过程中,我们需要逐步考虑每种字母在构成子序列时所起到的作用。由于字符串仅由小写字母组成,小写字母共有 26 个,所以要对这 26 个字母依次进行遍历。

代码

Python 

# 读取输入的字符串长度 n 和所需的字母种类数 k
n, k = map(int, input().split())# 创建一个长度为 26 的数组 cnt,用于统计每个字母的出现次数
cnt = [0] * 26# 创建一个长度为 k + 1 的数组 dp,dp[j] 表示恰好包含 j 种字母的子序列的数量
# 初始时,dp[0] = 1,表示空序列恰好包含 0 种字母
dp = [0] * (k + 1)
dp[0] = 1# 读取输入的字符串
for c in input():# 统计每个字母的出现次数cnt[ord(c) - ord('a')] += 1# 定义取模的常量
mod = int(1e9 + 7)# 遍历每个字母
for i in range(26):# 计算当前字母的非空子序列的数量# pow(2, cnt[i], mod) 表示当前字母的所有子序列的数量(包括空序列)# 减去 1 后得到非空子序列的数量b = (pow(2, cnt[i], mod) - 1) % mod# 从后往前更新 dp 数组,避免重复计算for j in range(k, 0, -1):# 状态转移方程:dp[j] 加上 dp[j - 1] 乘以当前字母的非空子序列的数量dp[j] += dp[j - 1] * b# 对结果取模,避免溢出dp[j] %= mod# 输出恰好包含 k 种字母的子序列的数量
print(dp[k])

C++ 

#include <bits/stdc++.h>
using namespace std;const int N = 1010;
const int MOD = 1e9 + 7;
int dp[N], cnt[26];// 快速幂函数,计算 base 的 exp 次幂对 mod 取模的结果
long long fastPow(long long base, long long exp, long long mod) {long long result = 1;base = base % mod;while (exp > 0) {if (exp % 2 == 1) {result = (result * base) % mod;}base = (base * base) % mod;exp = exp / 2;}return result;
}int main() {int n, k;cin >> n >> k;// 读取字符串并统计每个字母的出现次数for (int i = 0; i < n; i++) {char a;cin >> a;cnt[a - 'a']++;}// 初始化 dp 数组,空序列包含 0 种字母dp[0] = 1;// 遍历每个字母for (int i = 0; i < 26; i++) {// 计算当前字母的非空子序列的数量int b = (fastPow(2, cnt[i], MOD) - 1 + MOD) % MOD;// 从后往前更新 dp 数组for (int j = k; j > 0; j--) {// 状态转移方程,更新 dp[j] 并取模dp[j] = (dp[j] + 1LL * dp[j - 1] * b) % MOD;}}// 输出结果cout << dp[k] << endl;return 0;
}

相关文章:

18-动规-子序列中的 k 种字母(中等)

题目 来源 28. 子序列中的 k 种字母&#xff08;第一期模拟笔试&#xff09; 思路 基本分析 子序列的定义 子序列是从原序列中选取部分元素&#xff0c;同时保持这些元素在原序列中的相对顺序所形成的新序列。也就是说&#xff0c;子序列中的元素不需要在原序列中连续出现…...

Lua 数组

Lua 数组 引言 Lua 是一种轻量级、高效的脚本语言&#xff0c;广泛应用于游戏开发、服务器端编程等领域。在 Lua 中&#xff0c;数组是一种非常重要的数据结构&#xff0c;它允许开发者以高效的方式存储和操作一系列数据。本文将详细介绍 Lua 数组的相关知识&#xff0c;包括…...

C 语言的未来:在变革中坚守核心价值

一、从 “古老” 到 “长青”&#xff1a;C 语言的不可替代性 诞生于 20 世纪 70 年代的 C 语言&#xff0c;历经半个世纪的技术浪潮&#xff0c;至今仍是编程世界的 “基石语言”。尽管 Python、Java 等高级语言在应用层开发中占据主流&#xff0c;但 C 语言在系统级编程和资…...

springboot3 基于 logback

1.配置 logging:level:root: ${ROOT_LOG_LEVEL:debug}web: ${ROOT_WEB_LEVEL:info}org.hibernate.orm.jdbc.bind: ${ROOT_SQL_PARAM_LEVEL:info} #打印SQL参数2.基于 logback-spring.xml配置 <?xml version="1.0" encoding="UTF-8"?> <configu…...

网络相关的知识总结1

1.设备可以通过以太网电缆&#xff08;如双绞线&#xff09;连接到交换机的端口&#xff0c;交换机也通过以太网电缆连接到路由器。但是如果距离过远&#xff0c;比如跨国路由器如何连接&#xff1f; 1.专用通信线路&#xff08;如 MPLS、光纤专线&#xff09;&#xff1a;租用…...

Rust vs. Go: 性能测试(2025)

本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go&#xff0c;但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper&#xff0c;它基于 Tokio 异步运…...

如何使用postman调用多参数接口(包含文件上传)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 如何使用postman调用包含文件参数的多参数接…...

无人机助力道路智能养护,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍道路交通场景下水泥路面缺陷智能检测识别系统

道路养护是保障交通命脉安全的隐形防线&#xff0c;其重要性不亚于道路建设本身。我国每年因道路病害引发的交通事故占比高达12%&#xff0c;及时修复1平方米的早期裂缝可避免后续数万元的修复成本。在这场与道路病害赛跑的战役中&#xff0c;传统养护模式正遭遇前所未有的挑战…...

28_跨域

目录 promise promise的基本语法 async await try catch promise 静态方法 跨域 跨域的解决方案 1-cors ​编辑 2-jsonp方案 3-代理服务器 promise promise 是一个es6新增的语法 承诺的意思 作用:是专门用来解决回调地狱!!!! promise的基本语法 // 基本语法:// Pr…...

【C#.NET】VS2022创建Web API项目

C# Web API 是一种基于 .NET 平台&#xff08;包括但不限于.NET Framework 和 .NET Core&#xff09;构建 HTTP 服务的框架&#xff0c;用于创建 RESTful Web 服务。REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它利用HTTP协议…...

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…...

Day17 -实例:利用不同语言不同框架的特征 进行识别

前置&#xff1a;我们所需的web站点&#xff0c;都可以利用fofa去搜索&#xff0c;例如&#xff1a;app"flask"这样的语句去找对应的站点&#xff0c;找到后&#xff0c;我们模拟不知道是什么框架&#xff0c;再根据特征去判断它的框架。 ***利用工具可以再去结合大…...

Centos7 安装 TDengine

Centos7 安装 TDengine 1、简介 官网&#xff1a; https://www.taosdata.com TDengine 是一款开源、高性能、云原生的时序数据库&#xff08;Time Series Database, TSDB&#xff09;, 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓…...

DeepSeek调用API访问,使用AnythingLLM建立本地知识库后开放API调用,ApiFox/PostMan调用本地DeepSeek

上篇文章中我们使用AnythingLLM成功在本地部署了DeepSeek的本地知识库&#xff0c;并且上传了几个文件让DeepSeek学习&#xff0c;可点击查看&#xff1a; 本地部署DeepSeek并使用AnythingLLM建立本地知识库全流程&#xff0c;DeepSeek-R1:7b本地安装部署,DeepSeek-R1本地部署…...

SQL语句---DDL

文章目录 1、SQL语句2、DDL2.1 数据库的操作显示当前的数据库创建数据库指定编码删除数据库切换当前数据库 2.2 数据表的操作显示表创建表显示表结构修改表添加新的字段删除原有字段 修改原有字段删除数据表 2.3 Mysql数据库中常用的数据类型 1、SQL语句 结构化查询语句&#…...

Java实战:实现用户的登录注册功能

系列文章目录 Java文件 I/O流的操作实战和高级UI组件和事件监听的综合 文章目录 系列文章目录前言一、大致流程思路分析&#xff1a;二、定义用户类&#xff1a;三、服务层的实现&#xff1a; 1.保护用户数据功能的实现2.登录操作的实现 四、实现用户的注册界面&#xff1a; 大…...

用LLama factory时报类似Process 2504721 got signal: 1的解决方法

之前用nohup来远程跑LLama factory微调脚本&#xff0c;是没有问题的&#xff0c;但今天发现运行类似下面这个命令时&#xff0c; nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一关闭ssh session&#xff0c;就会终止训练&#xff0c;报类似&…...

WPF ContentTemplate

ContentTemplate 是一个非常重要的属性&#xff0c;用于定义 ContentPresenter 中内容的显示样式。通过设置 ContentTemplate&#xff0c;你可以控制 ContentPresenter 如何呈现其绑定的内容。 下面是对 ContentTemplate 的详细解释以及它的作用和用法。 1. ContentTemplate 的…...

powershell7.5.0不支持conda的问题

经历&#xff1a;这周手欠使用vscode的powershell时提示我更新&#xff0c;我就更新了&#xff0c;更新完激活不了conda环境了&#xff0c;查询了半天是powershell最新版7.5.0与目前conda25.1.1以前的版本不支持的问题。 问题环境&#xff1a;powershell版本>7.5.0&#xff…...

SSE SseEmitter.completeWithError(e) 触发的处理逻辑

在 Java 客户端使用 OkHttp 监听 SSE&#xff08;Server-Sent Events&#xff09; 的情况下&#xff0c;当服务端调用 SseEmitter.completeWithError(e)&#xff0c;客户端会触发 EventSourceListener 的 onFailure() 方法&#xff08;而不是 onError&#xff09;。 1. 服务端&…...

JAVA反序列化深入学习(八):CommonsCollections6

与CC5相似&#xff1a; 在 CC5 中使用了 TiedMapEntry#toString 来触发 LazyMap#get在 CC6 中是通过 TiedMapEntry#hashCode 来触发 LazyMap#get 之前看到了 hashcode 方法也会调用 getValue() 方法然后调用到其中 map 的 get 方法触发 LazyMap&#xff0c;那重点就在于如何在反…...

科技快讯 | 韩国科学家研发出全球首款仿生液态机器人;OpenAI推出GPT-4o图像生成功能

韩国科学家研发出全球首款仿生液态机器人&#xff0c;自由变形穿越金属栅栏 韩国首尔大学等研究团队开发出一种基于液体的下一代软体机器人&#xff0c;具有细胞仿生特性&#xff0c;能自由变形、分裂融合&#xff0c;并执行物质运输任务。该机器人采用“颗粒装甲”设计&#x…...

[Vue2]v-model用于表单

之前我们讲到过v-model用于双向绑定一个数据&#xff0c;通常用于表单提交数据。而之前的演示里只演示了文本输入栏&#xff0c;这里详细演示一下其他表单输入时使用v-model。 文本输入 文本输入数据就是经典的type"text"&#xff1a; <input type"text&qu…...

【机器学习】imagenet2012 数据预处理数据预处理

【机器学习】数据预处理 1. 下载/解压数据2. 数据预处理3. 加载以及训练代码3.1 使用PIL等加载代码3.2 使用OpenCV的方式来一张张加载代码3.3 h5的方式来加载大文件 最后总结 这个数据大约 140个G,128w的训练集 1. 下载/解压数据 首先需要下载数据&#xff1a; 数据最后处理…...

基于pycatia的CATIA零部件激活状态管理技术解析

一、问题背景&#xff1a;CATIA激活状态管理的痛点 在CATIA V5/V6的装配设计过程中&#xff0c;工程师经常使用激活状态控制&#xff08;Activation&#xff09;​来管理大型装配体的显示性能。但实际使用中存在一个典型问题&#xff1a;​当零部件被取消激活&#xff08;Deac…...

基于javaweb的SpringBoot水果生鲜商城系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

‌JVM 内存模型(JDK8+)

‌1. 内存模型结构图解‌ JVM 内存模型&#xff08;JDK 8&#xff09; ├── **线程私有区** │ ├── 程序计数器&#xff08;Program Counter Register&#xff09;‌ │ ├── 虚拟机栈&#xff08;VM Stack&#xff09; │ │ └── 栈帧&#xff08;局…...

基于飞腾FT2000/4的全国产标准6U VPX板卡,支持银河麒麟

1 功能 高可靠性的基于飞腾公司FT2000/4的处理器以及 X100 芯片组的标准6U VPX板卡&#xff0c;具有以太网、SATA、PCIE&#xff0c;以及显示等接口&#xff0c;产品功能框图如图1所示&#xff1a; 图 1 功能框图 2 技术指标 本产品功能和性能指标&#xff0c;见表 1。 表1 产品…...

【从零实现Json-Rpc框架】- 项目实现 - Dispatcher模块实现篇

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

WPS宏开发手册——JSA语法练习

目录 系列文章3、JSA语法练习3.1、运算练习3.2、比较练习3.3、if else练习3.4、for 练习3.5、字符串、数组方法练习3.6、语义转编程练习题 系列文章 使用、工程、模块介绍 JSA语法 JSA语法练习题 Excel常用Api 后续EXCEL实战、常见问题、颜色附录&#xff0c;持…...

【自学笔记】Go语言基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. Go 语言简介2. 基本语法变量声明与赋值常量数据类型运算符 3. 控制结构条件语句循环语句 4. 函数函数定义与调用多返回值匿名函数与闭包 5. 并发编程goroutinech…...

PyQt6实例_批量下载pdf工具_主线程停止线程池

目录 前置&#xff1a; 代码&#xff1a; 视频&#xff1a; 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点&#xff1a; 线程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信号与…...

在 Vue 项目中,登录成功后是否存储 token 与用户信息到本地

答案&#xff1a;不安全 举例&#xff1a;直接使用localStorage存储&#xff0c;本地存储可能会被 XSS 攻击窃取 localStorage.setItem(token, response.token)localStorage.setItem(userInfo, JSON.stringify({username: response.username,email: response.email})) 推荐方…...

【加密社】做一个展示币种价格的组件

具体的代码是以下,可以看到 <div id"crypto-price-widget"><p class"loading">Loading cryptocurrency prices... <span class"spinner"></span></p> </div><script> document.addEventListener(DOM…...

CANoe入门——CANoe的诊断模块,调用CAPL进行uds诊断

目录 一、诊断窗口介绍 二、诊断数据库文件管理 三、添加基础诊断描述文件&#xff08;若没有CDD/ODX/PDX文件&#xff09;并使用对应的诊断功能进行UDS诊断 3.1、添加基础诊断描述文件 3.2、基于基础诊断&#xff0c;使用诊断控制台进行UDS诊断 3.2.1、生成基础诊断 3.…...

AI日报 - 2025年3月30日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; 模型进展 | Qwen2.5-Omni多模态实时交互&#xff0c;Gemini 2.5 Pro/GPT-4o低调升级&#xff0c;Claude内部思考过程揭秘。 新模型和升级持续涌现&#xff0c;多模态与内部机制理解成焦点。 ▎&#x…...

蓝桥刷题note11(好数)

1&#xff0c;好数 一个整数如果按从低位到高位的顺序&#xff0c;奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数&#xff0c;偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数&#xff0c;我们就称之为 “好数”。 给定一个正整数 NN&#xff0c;请计算从 1 到 NN 一共…...

Go常用的设计模式

Go常用的设计模式 常见的设计模式&#xff0c;如 单例模式、工厂模式、策略模式、观察者模式、代理模式、装饰器模式 和 适配器模式 都可以在 Go 中实现&#xff0c;适用于不同的开发需求。 这些设计模式不仅能帮助你编写结构清晰、可维护的代码&#xff0c;还能让你更好地应…...

复现文献中的三维重建图像生成,包括训练、推理和可视化

要复现《One - 2 - 3 - 45 Fast Single Image to 3D Objects with Consistent Multi - View Generation and 3D Diffusion (CVPR)2024》文献中的三维重建图像生成&#xff0c;包括训练、推理和可视化&#xff0c;并且确保代码能正常运行&#xff0c;下面是基本的实现步骤和示例…...

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…...

Mysql练习题

先创建对应数据表 #先创建表 #学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student values(02 , 钱电 , 1990-12-21 , 男); insert int…...

torch不能使用cuda的解决方案

遇到了这样的报错&#xff0c;说明 torch不能使用cuda 反思 我频繁地尝试安装不同的 nvdia 驱动&#xff0c;浪费了很多时间。因为我的错误地认为nvidia会自带cuda&#xff0c;其实cuda需要单独安装。 还有我的torch是cpu版本的&#xff0c;即使nvidia cuda安装了&#xff0…...

Python 循环全解析:从语法到实战的进阶之路

一、问答题 &#xff08;1&#xff09;下面的循环体被重复了多少次?每次循环的输出结果是什么? i1 while i < 10:if i % 2 0:print(i)死循环&#xff0c;没有输出结果 i1 while i < 10:if i % 2 0:print(i)i l死循环&#xff0c;没有输出结果 i 1 while i< 10…...

代码随想录算法训练营--打卡day3

复习&#xff1a;标注感叹号的需要在电脑上重新做几遍 一.两两交换链表中的节点&#xff01;&#xff01; 1.题目链接 24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 2.思路 画图 3.代码 class Solution {public ListNode swapPairs(ListNode head) …...

ubuntu 安装mysql

在 Ubuntu 系统中安装 MySQL 的步骤如下&#xff1a; 步骤 1&#xff1a;更新软件包列表 sudo apt update步骤 2&#xff1a;安装 MySQL 服务器 sudo apt install mysql-server -yUbuntu 22.04/20.04 默认安装 MySQL 8.0&#xff0c;早期版本可能默认使用 MariaDB。 如果需要…...

用Python实现资本资产定价模型(CAPM)

使用 Python 计算资本资产定价模型&#xff08;CAPM&#xff09;并获取贝塔系数&#xff08;β&#xff09;。 步骤 1&#xff1a;导入必要的库 import pandas as pd import yfinance as yf import statsmodels.api as sm import matplotlib.pyplot as plt 步骤 2&#xff1…...

Conda配置Python环境

1. 安装 Conda 选择发行版&#xff1a; Anaconda&#xff1a;适合需要预装大量科学计算包的用户&#xff08;体积较大&#xff09;。 Miniconda&#xff1a;轻量版&#xff0c;仅包含 Conda 和 Python&#xff08;推荐自行安装所需包&#xff09;。 验证安装&#xff1a; co…...

Redisson延迟队列实战:分布式系统中的“时间管理者“

目录 引言&#xff1a;延迟队列的魅力与应用 什么是Redisson延迟队列&#xff1f; 技术原理与工作机制 应用场景 环境准备&#xff1a;搭建基础 Maven依赖配置 Redisson客户端配置 延迟队列实现&#xff1a;核心代码 工作原理深度解析 数据模型与存储结构 元素流转过…...

国产化适配 - YashanDB、达梦数据库与MySQL 的兼容性及技术选型对比分析

根据知识库信息&#xff0c;以下是 YashanDB、达梦数据库与MySQL 的兼容性及技术选型对比分析&#xff1a; 1. YashanDB 与 MySQL 兼容性 协议与语法兼容 &#xff1a; YashanDB 100%兼容 MySQL 5.7协议 的常用命令&#xff08;如 SELECT、INSERT&#xff09;&#xff0c;但…...

从0开始——在PlatformIO下开展STM32单片机的HAL库函数编程指南

目录 前言 编写时钟初始化 实现Systicks_Handler&#xff0c;完成HAL库的时基更新 编写驱动测试 前言 笔者最开始的尝试是在2025年的寒假&#xff0c;准备向PlatformIO迁移HAL库&#xff0c;注意&#xff0c;截止到目前&#xff0c;PlatformIO对HAL库的支持已经非常完善了。…...