三国杀专业分析面板,立志成为桌游界的stockfish
三国杀专业分析面板 (SGSFish)
GitHub仓库:
本项目是一个基于 Python 实现的三国杀专业分析面板,旨在模拟玩家决策过程,通过量化评估动作实体(卡牌/技能)的价值、考虑它们之间的相互影响(包括基于作用域的条件影响)、根据战局动态调整策略权重,并结合概率模型估计对手手牌,以提供当前回合最佳行动序列(包含具体作用域选择)及其预期得分。
核心概念
本项目基于以下核心逻辑构建:
-
属性系统:
- 动作实体 (ActionEntity): 定义了基础的攻击、防御、辅助属性值。
- 武将: 每个武将拥有基础血量上限。
-
动作实体 (ActionEntity):
- 合并了原有的卡牌和技能概念,代表一个可执行的动作。
- 包含基础属性 (攻击、防御、辅助)。
- 状态属性:
timing
: 发动时机 (如 0=出牌阶段, 2=判定阶段)。response_suit
,response_rank_range
: 响应特定花色/数字的要求 (如【闪电】响应黑桃2-9)。scope
: 可选的作用域列表 (如【过河拆桥】可选[1, 2, 3]
代表手牌区、装备区、判定区)。
-
影响系统:
- 某些动作实体在使用后,可能会对其后使用的特定动作实体产生临时的属性修正。
- 例如,“过河拆桥”作用于手牌区(scope=1)时,可能会提升后续“杀”的攻击评估价值。
- 影响现在可以指定
required_scope
,即该影响只有在源动作选择了特定作用域时才生效。 - 这些影响关系、修正值和作用域要求存储在数据库中。
-
动态权重:
- AI 的决策倾向会根据战场局势动态调整:
- 敌方血量越低,攻击属性的权重越高,鼓励进攻。
- 己方血量越低,防御属性的权重越高,鼓励保守或自保。
- 辅助属性的权重当前版本是固定的。
- AI 的决策倾向会根据战场局势动态调整:
-
概率模型:
- 通过记录牌堆的初始构成、己方手牌以及(理论上)场上已出现的牌,结合对手当前的手牌数量,来估算对手手牌中持有各种动作实体的可能性(概率)。
- 当前实现为简化模型,基于剩余牌堆比例估算。
-
最佳序列查找:
- 核心决策逻辑。
- 评估不同作用域: 对于具有可选作用域的动作(如【过河拆桥】),算法现在会评估选择不同作用域的情况。
- 实现方式: 将每个 (动作实体, 选定作用域) 的组合视为一个独立的“动作选择”。算法会遍历这些“动作选择”的所有可能排列组合(包括不同长度的子序列)。
- 对每个序列,结合动态权重和影响系统(现在考虑了影响的
required_scope
和动作选择的chosen_scope
)计算其综合得分。 - 找出总得分最高的序列作为推荐的最佳行动顺序(包含每个动作选择的作用域)。
- 注意:评估不同作用域会显著增加计算复杂度,特别是当手牌中有多张具有可选作用域的牌时。未来可能需要优化搜索算法。
- 理想的排序方式仍然是:优先最大化己方收益,其次考虑最小化敌方潜在威胁。当前实现主要侧重于最大化己方得分。
-
最佳序列查找:
- 核心决策逻辑。
- 评估不同作用域: 对于具有可选作用域的动作(如【过河拆桥】),算法现在会评估选择不同作用域的情况。
- 实现方式: 将每个 (动作实体, 选定作用域) 的组合视为一个独立的“动作选择”。算法会遍历这些“动作选择”的所有可能排列组合(包括不同长度的子序列)。
- 对每个序列,结合动态权重和影响系统(现在考虑了影响的
required_scope
和动作选择的chosen_scope
)计算其综合得分。 - 找出总得分最高的序列作为推荐的最佳行动顺序(包含每个动作选择的作用域)。
- 注意:评估不同作用域会显著增加计算复杂度,特别是当手牌中有多张具有可选作用域的牌时。未来可能需要优化搜索算法。
- 理想的排序方式仍然是:优先最大化己方收益,其次考虑最小化敌方潜在威胁。当前实现主要侧重于最大化己方得分。
-
数据存储:
- 使用 SQLite 数据库 (
sgs_data.db
) 存储所有基础数据,包括:- 动作实体的名称、基础属性、状态属性(包括
scope
)。 - 实体之间的影响关系、修正值及作用域要求 (
required_scope
)。 - 动作实体的名称、基础属性、状态属性(包括
scope
)。 - 实体之间的影响关系、修正值及作用域要求 (
required_scope
)。 - 英雄的名称、血量上限。
- (未来) 技能的详细数据。
- (未来) 技能的详细数据。
- 动作实体的名称、基础属性、状态属性(包括
- 这使得数据与逻辑分离,方便维护和扩展。
- 使用 SQLite 数据库 (
项目结构
database.py
: 负责数据库的初始化、连接、数据填充(初始实体、英雄、影响)以及从数据库加载数据。game_elements.py
: 定义核心游戏元素的数据类,如ActionEntity
,Hero
,Player
,AttributeSet
。还包括从数据库加载数据后创建实体原型的逻辑。game_logic.py
: 包含主要的决策逻辑,如权重计算 (calculate_weights
)、单步行动评估 (evaluate_action
)、概率模型 (estimate_opponent_hand_probabilities
) 和核心的最佳序列查找 (find_best_sequence
)。main.py
: 项目的入口点,设置并运行一个简单的 1v1 测试场景,调用game_logic
中的函数并打印结果。包含数据库自动初始化的检查逻辑。database.py
: 负责数据库的初始化、连接、数据填充(初始实体、英雄、影响)以及从数据库加载数据。game_elements.py
: 定义核心游戏元素的数据类,如ActionEntity
,Hero
,Player
,AttributeSet
。还包括从数据库加载数据后创建实体原型的逻辑。game_logic.py
: 包含主要的决策逻辑,如权重计算 (calculate_weights
)、单步行动评估 (evaluate_action
)、概率模型 (estimate_opponent_hand_probabilities
) 和核心的最佳序列查找 (find_best_sequence
)。main.py
: 项目的入口点,设置并运行一个简单的 1v1 测试场景,调用game_logic
中的函数并打印结果。包含数据库自动初始化的检查逻辑。
如何运行
- 确保你的环境中安装了 Python (3.x)。
- 打开终端或命令提示符,导航到项目目录。
- 运行主程序:
python main.py
- 程序将首先尝试加载数据。如果数据库文件 (
sgs_data.db
) 不存在或数据不完整,它会自动尝试调用database.py
中的函数来初始化数据库并填充初始数据。 - 之后,程序将执行预设的 1v1 测试场景,并输出推荐的行动顺序(包含作用域选择)和对敌方手牌的概率估计。
- 注意: 如果
main.py
中的自动初始化逻辑失败,或者你想强制重新创建数据库,可以手动运行:
(请注意,这将删除现有的python database.py
sgs_data.db
文件并重新创建)
待办事项 / 未来计划
- 完整实现技能系统: 将技能作为
ActionEntity
添加到数据库,并完善相关逻辑。 - 完善概率模型: 考虑弃牌堆、装备区、判定区的牌,使用更精确的概率计算方法。
- 优化序列查找: 当前使用
itertools.permutations
遍历所有“动作选择”的组合,复杂度较高。探索更优化的搜索算法(如A*搜索、蒙特卡洛树搜索、加入启发式剪枝等)。 - 实现完整排序逻辑: 在
find_best_sequence
中加入对敌方潜在威胁的评估。 - 扩展数据: 添加更多的三国杀实体、英雄数据。
- 实现游戏状态机: 更精细地模拟游戏阶段和动作合法性检查。
- 构建交互界面或模拟器: 创建用户界面或集成到模拟器。
- 完整实现技能系统: 将技能作为
ActionEntity
添加到数据库,并完善相关逻辑。 - 完善概率模型: 考虑弃牌堆、装备区、判定区的牌,使用更精确的概率计算方法。
- 优化序列查找: 当前使用
itertools.permutations
遍历所有“动作选择”的组合,复杂度较高。探索更优化的搜索算法(如A*搜索、蒙特卡洛树搜索、加入启发式剪枝等)。 - 实现完整排序逻辑: 在
find_best_sequence
中加入对敌方潜在威胁的评估。 - 扩展数据: 添加更多的三国杀实体、英雄数据。
- 实现游戏状态机: 更精细地模拟游戏阶段和动作合法性检查。
- 构建交互界面或模拟器: 创建用户界面或集成到模拟器。
贡献
欢迎提出建议、报告 Bug 或贡献代码!请通过 GitHub Issues 或 Pull Requests 进行。
相关文章:
三国杀专业分析面板,立志成为桌游界的stockfish
三国杀专业分析面板 (SGSFish) GitHub仓库: 本项目是一个基于 Python 实现的三国杀专业分析面板,旨在模拟玩家决策过程,通过量化评估动作实体(卡牌/技能)的价值、考虑它们之间的相互影响(包括基于作用域的…...
解析 select 函数
解析 select 函数 select 函数是 Unix/Linux 系统中用于多路复用的系统调用,主要用于在多个文件描述符(file descriptors)上等待事件的发生。它允许程序同时监视多个 I/O 通道,并在任意一个通道准备好进行 I/O 操作时通知程序&am…...
对话模型和补全模型区别
对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…...
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
以下是使用Qt和OpenGL实现绘制彩色三角形并添加颜色选择按钮的步骤: 一、创建OpenGL绘制组件 继承QOpenGLWidget实现自定义绘制类: // myopenglwidget.h #include <QOpenGLWidget> #include <QOpenGLFunctions_3_3_Core> #include <QO…...
十分钟应急响应——自定义工具链整合实战
核心思路 结合群联AI云防护的API和自定义脚本,实现攻击检测、节点切换、日志分析的端到端自动化。 技术实现步骤 1. 实时攻击检测脚本 使用Python监听群联系统日志,识别攻击特征: # monitor_attack.py import json import subprocess from…...
SpringCloud微服务架构设计与实践 - 面试实战
SpringCloud微服务架构设计与实践 - 面试实战 第一轮提问 面试官:马架构,请问在SpringCloud微服务架构中,如何实现服务注册与发现? 马架构:在SpringCloud中,Eureka是常用的服务注册与发现组件。服务提供…...
每日算法——快乐数、两数之和
202. 快乐数 class Solution { public:bool isHappy(int n) {unordered_set<int> result_set;while(true){int sum 0;while(n>0){sum (n%10)*(n%10);n/10;}if(sum1){return true;}else{if(result_set.find(sum) ! result_set.end()){return false;}result_set.inser…...
反射,枚举,lambda表达式
目录 反射枚举的使用Lambda表达式函数式接口语法Lambda表达式语法精简 变量捕获Lambda在集合List中的使用 反射 作用:在Java代码中,让一个对象认识到自己 比如一个类的名字,里面的方法,属性等 让程序运行的过程,某个对…...
matlab 绘图
1.三维绘图 % 原始数据(按行输入:x y z) data [1 2 3 ;5 56 234 ;32 34 67 1 2 5 ];% 提取坐标并生成网格(适用于surf函数的网格格式) x data(:,1); % X坐标(行数对应Y轴) y data…...
AI日报 - 2025年04月25日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI o3模型展现行动能力,英国发布RepliBench评估AI自主复制风险,DeepMind CEO担忧AGI协调挑战。 模型能力向行动和自主性演进,安全与协调成为焦点。 ▎💼 商业动向…...
力扣面试150题--基本计算器
Day 31 题目描述 思路 (逆波兰表达式扩展) 初次思路:此题我遇到了几个难点 如何处理()如何处理-1和2-1中的负数还是减法问题 1-(-(12))如何处理多余的空格 我的做法如…...
各种各样的bug合集
一、连不上数据库db 1.可能是密码一大包东西不对; 2.可能是里面某个port和数据库不一样(针对于修改了数据库但是连不上的情况); 3.可能是git代码没拉对,再拉一下代码。❤ 二、没有这个包 可能是可以#注释掉。❤ …...
【25软考网工】第三章(3)虚拟局域网VLAN
一、虚拟局域网VLAN 1. VLAN基础 定义:根据管理功能、组织机构或应用类型对交换局域网进行分段而形成的逻辑网络。例如将大型网络划分为多个VLAN(如VLAN1-4)。 优势: 管理便利:便于对不同部门或功能进行分组管理安全隔…...
SFINAE(Substitution Failure Is Not An Error)
C 中的 SFINAE(替换失败并非错误) SFINAE(Substitution Failure Is Not An Error)是 C 模板元编程的核心机制之一,允许在编译时根据类型特性选择不同的模板实现。以下通过代码示例和底层原理,逐步解析 SFI…...
学习记录:DAY17
我的学习日志:前端开发练习 前言 只想畏缩在自己的床上,什么也不想干😰 我觉得有必要调整一下复习方针,不然容易白学。 我确实不太爱复习的人,尽量每天抽出时间来复习昨天的内容,周末总体复习一下一个星期…...
LibrePhotos本地部署打造个人云相册安全存储和分享家庭照片(1)
文章目录 前言1.关于LibrePhotos2.本地部署LibrePhotos3.LibrePhotos简单使用4. 安装内网穿透5.配置LibrePhotos公网地址6. 配置固定公网地址 前言 手机里塞满了珍贵回忆,却担心一不小心就被偷看?别怕,今天我就教你一个绝招——使用LibrePho…...
Android插拔U盘导致黑屏问题排查
问题现象: 车机大屏偶先插拔带音乐的U盘,导致车机系统短暂黑屏的情况。 日志中可以看到vold进程unmount了两次分区,一次是U盘分区,一次是/storage/emulated/0分区: I vold : Start killProcesses: /mnt/media_rw/…...
Android Build Variants(构建变体)详解
Android Build Variants(构建变体)是 Android 开发中用于生成不同版本应用程序的一种机制。它允许开发者根据不同的需求,如不同的应用市场、不同的功能模块、不同的环境配置等,从同一个代码库中生成多个不同的 APK。 组成部分 B…...
看一看 中间件Middleware
中间件(Middleware)是介于操作系统与应用程序之间的一层软件 它为分布式应用程序提供了统一的通信、数据交换、服务调用、消息传递等能力。 它的作用就像“胶水”,连接各个系统组件。 文章目录 消息队列缓存中间件数据库中间件服务注册与发现…...
ai人才需要掌握什么
在人工智能(AI)技术重塑全球产业格局的今天,AI人才的核心竞争力已超越单一技术维度,演变为“技术深度+人文广度+伦理自觉”的三维能力模型。本文将从技术能力体系、跨学科思维、伦理与治理三个层面,解析AI人才的核心能力框架,并针对技术局限性提出系统性应对策略。 一、…...
RISC-V低功耗MCU动态时钟门控技术详解
我来分享一下RISC-V核低功耗MCU的动态时钟门控技术实现: 这款MCU通过硬件级时钟门控电路实现了模块级的功耗管理。当外设(如UART、SPI)处于闲置状态时,系统会自动切断其时钟信号,减少无效翻转功耗。同时支持多电压域协…...
第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
前言 作为Unity初学者,在实现复杂场景时经常会遇到性能瓶颈。本文将带你通过四个关键技术的实战学习,掌握现代Unity开发的核心优化方案: Shader编程 - 编写表面着色器控制物体渲染Addressable系统 - 实现高效资源管理DOTS技术栈 - 解锁百万…...
把dll模块注入到游戏进程的方法_插APC注入
一、概述 APC是异步过程调用,系统创建线程的时候会为线程创建一个APC队列,当线程调用SleepEx,WaitSingleObjectEx等函数时,并把线程状态被设置为可提醒状态时,线程并不会睡眠,而是检查APC队列是否为空,如果不为空,转去执行APC队列中的每一项,因此给目标进程中的线程插…...
【C++】内存管理:内存划分、动态内存管理(new、delete用法)
文章目录 一、C/C中的内存划分二、C语言中动态内存管理方式三、C中动态内存管理方式1、new、delete基本用法(1)、内置类型(2)、自定义类型 2、operator new与operator delete函数3、new和delete的实现原理(1)内置类型(2)自定义类型…...
【k8s】KubeProxy 的三种工作模式——Userspace、iptables 、 IPVS
在 Kubernetes 集群中,KubeProxy 是实现 Service 的网络代理和负载均衡功能的关键组件。它支持三种工作模式:Userspace 模式、iptables 模式和 IPVS 模式。每种模式都有其特点和适用场景,以下是详细介绍: Userspace 模式 工作原…...
密码学的hash函数,哈希碰撞, collision resistance, BTC用到的SHA-256简介
密码学中的哈希函数、哈希碰撞、抗碰撞性(collision resistance)以及比特币中使用的 SHA-256 的简明介绍: 🧩 一、哈希函数(Hash Function) 定义: 哈希函数是一种将任意长度的输入(…...
通过监督微调(SFT)提升AI Agent效果的完整指南
一、SFT技术深度剖析 1.1 核心概念 监督微调(Supervised Fine-Tuning)是在大规模预训练语言模型(如LLaMA、GPT系列)的基础上,使用特定任务标注数据进行二次训练的过程。其本质是通过有监督学习调整模型参数ÿ…...
TCP基础题:音乐播放列表管理系统
需求描述 服务器端 创建一个 TCP 服务器,监听本地的 9999 端口,支持多个客户端连接。维护一个音乐播放列表,每个音乐条目包含歌曲名称、歌手、时长等信息。能够处理客户端的以下请求: 添加音乐到播放列表:接收客户端发…...
碰一碰发视频源码文案功能,支持OEM
在数字化营销与内容传播领域,碰一碰发视频文案功能凭借 NFC 技术的便捷性,实现了视频与文案的快速传递。本文将围绕该功能的开发流程,从需求分析、技术架构设计到核心功能实现,详细解析其开发要点,为开发者提供实践参考…...
如何在 Vue 3 中实现一个自定义的 `v-html` 组件
引言 在 Vue.js 中,v-html 是一个非常有用的指令,用于将 HTML 字符串渲染到元素中。然而,由于它直接插入 HTML 内容,存在潜在的安全风险(如 XSS 攻击)。因此,了解其工作原理并实现一个安全的替…...
差分对的返回电流-信号完整性分析
差分对的返回电流: 单端线的返回电流集中在参考平面,差分对的返回电流是怎样分布的?有一种观点认为,对于差分对这种耦合传输结构,其中一条走线是另一条走线的返回路径。甚至更进一步得出差分对不需要参考平面的结论。是否真的如此?要想了解…...
html单页业务介绍源码
源码介绍 html单页业务介绍源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码...
IDEA导入并启动若依项目步骤(SpringBoot+Vue3)
1.下载后端项目 项目地址:https://gitee.com/y_project/RuoYi-Vue 复制命令,将项目克隆到本地 git clone gitgitee.com:y_project/RuoYi-Vue.git使用IDEA打开(会有点慢,耐心等待),打开后如下 2.Mysql导…...
零基础上手Python数据分析 (22)案例实战]之利用 Matplotlib Seaborn 进行电商销售数据可视化分析
写在前面 —— 图表为刃,洞察先行!综合运用 Pandas、Matplotlib 与 Seaborn,点亮数据价值 本篇通过一个完整的案例实战,体验如何将数据分析与数据可视化紧密结合,让冰冷的数据转化为生动、直观、富有洞察力的视觉故事! 案例目标: 本篇博客将延续我们在第 17 篇案例中…...
图像预处理-霍夫变换
一.概念 霍夫变换是图像处理的一种技术,主要用于检测图像中的直线、圆等几何形状。基本思想就是将图像空间(直角坐标系或极坐标系)中的点映射到(霍夫空间)参数空间中,通过在参数空间中寻找累计最大值实现对特定形状的检测。 接下…...
逐步了解蓝牙 LE 配对(物联网网络安全)
配对是蓝牙 LE 中的一个重要概念。让我们来了解一下蓝牙 LE 配对的基础知识,概述 LE 设备如何在可信设备之间安全地共享密钥。 在之前的一篇文章]中,我们讨论了蓝牙 LE 的安全密钥。我们了解到,蓝牙 LE 设备可以创建并共享三个不同的安全密钥:一个用于数据加密,一个用于创…...
嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
一、什么是嵌入模型? 嵌入模型(Embedding Models) 是一种将高维离散数据(如文本、图像)转换为低维连续向量表示的技术。这些向量能够反映数据的语义关系,使得“语义相近的实体在向量空间中距离更近”。例如…...
解析塔能科技:绿色低碳智慧节能一站式破局之匙
在能源问题日益凸显的当下,绿色低碳、高效节能成为全球发展的重要课题。对各类节能方案进行深入剖析后,可以发现塔能科技的绿色低碳智慧节能一站式解决方案极具创新性与实用性,切实为众多行业面临的能源困境提供了有效解决路径。 直面行业痛点…...
el-menu箭头改为右下
问: el-menu箭头改为右下 回答: :deep(.el-menu){.el-sub-menu .el-sub-menu__icon-arrow{transition: transform 0.3stransform: rotateZ(-90deg) !important;}/* 展开状态:箭头向下 */.el-sub-menu.is-opened .el-sub-menu__icon-arrow,…...
[特殊字符][特殊字符] HarmonyOS相关实现原理聊聊![特殊字符][特殊字符]
Hey小伙伴们~ 今天咱们来聊聊HarmonyOS的实现原理吧!🤔💡 虽然直接看源代码是最直接的方式,但是OpenHarmony项目的开源进度有点让人捉急呢… 不过没关系,我们可以通过已经开放的SDK、IDE、开发示例和编译产物来一探究竟…...
RTSP播放器实现回调RGB|YUV给视觉算法,然后二次编码推送到RTMP服务
引言 在本文中,我们将介绍如何基于大牛直播SDK构建一个功能强大的RTSP|RTMP播放器,该播放器利用自定义SDK解码视频、处理RGB帧,并将其推送到RTMP流中进行直播。这个解决方案非常适合需要在实时视频流中集成视觉算法的场景,在处理…...
补题【Darkness+Different Billing+Dice Game】
文章目录 1.Darkness2.Different Billing3.Dice Game 1.Darkness 题目来源:Darkness I 这题不难想,通过作图我们发现 当nm时直接取对角线就好 当n!m时,取m,n的最小值,那么最小值的这个正方形都可以被填为黑色,剩下的…...
卷积神经网络:视觉炼金术士的数学魔法
🎮 “你以为《赛博朋克2077》的夜之城是画出来的?不,是卷积神经网络’卷’出来的!” 🎮 一、卷积:像素世界的连连看大师 想象你拿着一张《蒙娜丽莎》的拼图——卷积核就像你手中的拼图碎片,在画…...
Python:简介,Python解释器安装,第一个Python程序,开发环境(PyCharm安装和配置、Sublime安装和配置)
目录 Python简介 Python解释器的安装(Windows) 下载和安装Python安装包(解释器) 验证Python安装情况 第一个Python程序 单行运行 多行运行 Python开发环境(安装和配置PyCharm工具) 安装PyCharm Py…...
CE第二次作业
实验要求: 1.配置ssh实现A,B主机互相免密登录 2.配置nginx服务,通过多ip区分多网站 一,配置ssh实现A,B主机互相免密登录 步骤 在主机 A 上生成 SSH 密钥对。把主机 A 的公钥复制到主机 B。在主机 B 上重复上述步骤…...
【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)
习题集: 【单选题】在使用Ragas评估RAG应用时,Answer Correctness指标计算中,语义相似度是通过以下哪种方式得到的?( ) A. 大模型直接判断 B. 计算文本向量的余弦相似度 C. 对比文本词汇重合度 D. 统计文本字数差异 【多选题】当Context recall指标得分较低时,可采取的优…...
多头注意力
Multi-Head Attention 论文地址 https://arxiv.org/pdf/1706.03762 多头注意力介绍 多头注意力是Transformer模型的关键创新,通过并行执行多个独立的注意力计算单元,使模型能够同时关注来自不同表示子空间的信息。每个注意力头学习不同的语义特征&#x…...
【leetcode100】目标和
1、题目描述 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - …...
动态哈希映射深度指南:从基础到高阶实现与优化
哈希表是计算机科学中最高效的数据结构之一,而动态哈希映射通过智能扩容机制,在实时系统中展现出极强的适应性。本文将深入探讨其实现细节,结合主流框架源码解析,并给出可落地的性能优化方案。 一、动态哈希的数学本质 1. 哈希函…...
leetcode 2799. 统计完全子数组的数目 中等
给你一个由 正 整数组成的数组 nums 。 如果数组中的某个子数组满足下述条件,则称之为 完全子数组 : 子数组中 不同 元素的数目等于整个数组不同元素的数目。 返回数组中 完全子数组 的数目。 子数组 是数组中的一个连续非空序列。 示例 1ÿ…...