Kimi    LeetCode 3343. 统计平衡排列的数目 Java实现
以下是 LeetCode 3343. 统计平衡排列的数目的 Java 实现。这道题的核心思路是记忆化搜索 组合数学。题目分析- 平衡排列定义偶数位0,2,4...数字之和等于奇数位1,3,5...数字之和- 设字符串长度为 n偶数位有 (n1)/2 个奇数位有 n/2 个- 先统计每个数字出现次数计算总和。如果总和为奇数直接返回 0- 目标从每个数字的出现次数中分配一部分到偶数位一部分到奇数位使得偶数位数字之和等于总和的一半代码实现javaclass Solution {private final int[] cnt new int[10]; // 每个数字的出现次数private final int mod (int) 1e9 7;private Integer[][][][] f; // 记忆化数组private long[][] c; // 组合数表public int countBalancedPermutations(String num) {int s 0;for (char ch : num.toCharArray()) {cnt[ch - 0];s ch - 0;}// 如果总和为奇数无法平衡if (s % 2 1) {return 0;}int n num.length();int m n / 2 1;// 初始化记忆化数组f new Integer[10][s / 2 1][m][m 1];// 预处理组合数 C[n][k]c new long[m 1][m 1];c[0][0] 1;for (int i 1; i m; i) {c[i][0] 1;for (int j 1; j i; j) {c[i][j] (c[i - 1][j] c[i - 1][j - 1]) % mod;}}// dfs(i, j, a, b):// i: 当前处理的数字(0-9)// j: 偶数位还需要凑的和// a: 偶数位还剩下的空位// b: 奇数位还剩下的空位return dfs(0, s / 2, n / 2, (n 1) / 2);}private int dfs(int i, int j, int a, int b) {// 所有数字处理完毕if (i 9) {return ((j | a | b) 0) ? 1 : 0;}// 偶数位没位置了但还需要凑和不可能if (a 0 j ! 0) {return 0;}// 记忆化if (f[i][j][a][b] ! null) {return f[i][j][a][b];}int ans 0;// 枚举当前数字 i 放到偶数位的个数 l// 放到奇数位的个数就是 cnt[i] - lfor (int l 0; l Math.min(cnt[i], a); l) {int r cnt[i] - l; // 放到奇数位的个数// 需要满足奇数位放得下且偶数位凑的和不超过目标if (r 0 r b l * i j) {// 从偶数位 a 个位置选 l 个放数字 i: C[a][l]// 从奇数位 b 个位置选 r 个放数字 i: C[b][r]long ways c[a][l] * c[b][r] % mod;int next dfs(i 1, j - l * i, a - l, b - r);ans (int) ((ans ways * next % mod) % mod);}}return f[i][j][a][b] ans;}}核心思路说明要点 说明状态定义 dfs(i, j, a, b) 表示处理到数字 i 时偶数位还需凑 j 的和还剩 a 个偶数位空位和 b 个奇数位空位转移 枚举数字 i 放到偶数位的个数 l奇数位自动放 cnt[i]-l 个组合数 用 C[a][l] * C[b][r] 计算当前数字的放置方案数边界 处理完 0-9 所有数字后检查 j0 a0 b0复杂度- 时间复杂度: O(10 \times n^2 \times (n 10)) — 其中 10 是数字种类数- 空间复杂度: O(10 \times n^2 \times (n/21)) — 记忆化数组大小参考来源- (Doocs LeetCode 官方题解)- (每日一题题解)

相关新闻

震动感应灯

震动感应灯

在user文件夹添加shake文件夹添加shake.c,shake.h文件//在shake.c #include"sahke.h" #include"stm32f10x.h"void Shake_Init(void) {}//在shake.h #include"stm32f10x.h"void Shake_Init(void);//在main.c里调用Shake_Init();并且添…

2026/6/23 15:54:57阅读更多 →
接口幂等性设计与实现

接口幂等性设计与实现

接口幂等性设计与实现:保障系统可靠性的关键 在分布式系统中,接口幂等性是一个至关重要的设计原则。简单来说,幂等性指的是无论调用多少次同一个接口,其对系统状态的影响都保持一致。例如,支付系统中的重复扣款问题&a…

2026/6/23 15:49:56阅读更多 →
多集群管理

多集群管理

多集群管理:解锁企业级云原生新范式 在云原生与混合云架构普及的今天,企业常面临跨地域、跨环境的资源协同难题。多集群管理应运而生,成为解决异构资源统一调度的关键技术。它通过集中管控多个Kubernetes集群,实现资源池化、策略…

2026/6/23 15:49:56阅读更多 →
PowerCLI-Example-Scripts最佳实践:社区脚本的质量控制与维护

PowerCLI-Example-Scripts最佳实践:社区脚本的质量控制与维护

PowerCLI-Example-Scripts最佳实践:社区脚本的质量控制与维护 【免费下载链接】PowerCLI-Example-Scripts 项目地址: https://gitcode.com/gh_mirrors/po/PowerCLI-Example-Scripts PowerCLI-Example-Scripts是VMware PowerCLI的社区脚本集合,提…

2026/6/23 17:05:10阅读更多 →
TextureLab入门教程:10分钟创建你的第一个程序化材质

TextureLab入门教程:10分钟创建你的第一个程序化材质

TextureLab入门教程:10分钟创建你的第一个程序化材质 【免费下载链接】texturelab Free, Cross-Platform, GPU-Accelerated Procedural Texture Generator 项目地址: https://gitcode.com/gh_mirrors/te/texturelab 🎨 TextureLab 是一款免费、跨…

2026/6/23 17:05:10阅读更多 →
CS2303 (原CS356) - 操作系统课程设计

CS2303 (原CS356) - 操作系统课程设计

CS2303 (原CS356) - 操作系统课程设计 【免费下载链接】awesome-cs 👨‍💻 ❤️ 💻 上海交通大学计算机系本科作业参考 项目地址: https://gitcode.com/gh_mirrors/awe/awesome-cs Project 1 - 进程管理 skyzh, 2020 SpringBugenZhao, …

2026/6/23 17:05:10阅读更多 →
如何快速上手MCP-Security-Checklist:初学者完整教程与实战演练

如何快速上手MCP-Security-Checklist:初学者完整教程与实战演练

如何快速上手MCP-Security-Checklist:初学者完整教程与实战演练 【免费下载链接】MCP-Security-Checklist A comprehensive security checklist for MCP-based AI tools. Built by SlowMist to safeguard LLM plugin ecosystems. 项目地址: https://gitcode.com/g…

2026/6/23 17:05:10阅读更多 →
DawnLauncher自定义主题完全指南:打造个性化Windows桌面

DawnLauncher自定义主题完全指南:打造个性化Windows桌面

DawnLauncher自定义主题完全指南:打造个性化Windows桌面 【免费下载链接】DawnLauncher Windows快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁。 项目地址: https://gitcode.com…

2026/6/23 17:05:10阅读更多 →
为什么选择UnrealEngineSkyAtmosphere?对比主流天空渲染方案的优势分析

为什么选择UnrealEngineSkyAtmosphere?对比主流天空渲染方案的优势分析

为什么选择UnrealEngineSkyAtmosphere?对比主流天空渲染方案的优势分析 【免费下载链接】UnrealEngineSkyAtmosphere Unreal Engine Sky Atmosphere Rendering Technique 项目地址: https://gitcode.com/gh_mirrors/un/UnrealEngineSkyAtmosphere UnrealEngi…

2026/6/23 17:00:09阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/23 1:55:32阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流…

2026/6/23 0:00:38阅读更多 →
2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

模块一:行业背景——百亿赛道爆发,北京市场的特殊性与选型困局2026年,电子沙盘行业已走过“要不要做”的讨论,进入“找谁做、怎么做”的深水区。据行业研究机构数据,2025年国内电子沙盘市场规模已突破85亿元&#xff0…

2026/6/23 0:00:38阅读更多 →
音视频场景下的 Java 开发者面试:技术与挑战

音视频场景下的 Java 开发者面试:技术与挑战

面试互联网大厂:从音视频场景看 Java 开发者的技能与挑战 在互联网大厂求职的面试中,Java 开发者往往需要面对严苛的技术问题。今天,我们将通过一位名叫燕双非的搞笑程序员与严肃的面试官之间的对话,看看在音视频场景下&#xff0…

2026/6/23 0:00:38阅读更多 →