Kimi LeetCode 3343. 统计平衡排列的数目 Java实现
📅 2026/6/29 9:52:47
👁️ 次浏览
以下是 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/28 16:35:06
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…
📅 2026/6/29 4:03:08
The Big Mac index巨无霸指数是《经济学人》杂志发明的一个通俗指标,用来衡量各国货币相对美元是高估还是低估。
这是一个 2025年巨无霸指数(Big Mac Index) 的数据表格,使用 Highcharts Grid 来实现。
可以在经济学人数据服务找…
📅 2026/6/29 14:05:31
作者: QN1幻化引擎 Daln X 团队 石家庄贾大林
日期: 2026-06-28
版本: v18.0
关键词: 意识仿真, 跨模态整合, 具身体验, 因果不可约性摘要本报告展示了Daln X意识框架v18.0的实测数据,包括意识深化、因果验证、跨模态融合、具身体验突破和优先级冲刺五个核心模块的实…
📅 2026/6/29 16:49:08
做金属零部件质检快7年,前前后后踩了三次金相设备的坑:要么小厂攒的机器用3个月物镜就起雾,售后联系不上,要么进口品牌同配置报价是国产的2.5倍,预算卡死根本批不下来。2025年年初要新扩充3个检测工位,搜国…
📅 2026/6/29 16:49:08
MouseTester:揭开鼠标性能的神秘面纱 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mou/MouseTester
你是否曾经在激烈的游戏对决中因为鼠标反应迟钝而错失良机?或者在工作中因为鼠标指针漂移而感到烦躁不安ÿ…
📅 2026/6/29 16:49:08
高阶功能需9800元/年其他版本
📅 2026/6/29 16:49:08
鸿蒙 ArkTS 实战:Study Seat Log 从状态建模到交互闭环完整解析
前言
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
Study Seat Log 是一个面向 学习成长工具 的鸿蒙 ArkTS 小应用。记录自习座位、学习分钟和收藏座位。 本…
📅 2026/6/29 16:49:08
COM3D2 MaidFiddler实时编辑器:零延迟游戏体验的终极解决方案 【免费下载链接】COM3D2.MaidFiddler Maid Fiddler for COM3D2 -- a real-time value editor for COM3D2 项目地址: https://gitcode.com/gh_mirrors/co/COM3D2.MaidFiddler
COM3D2 MaidFiddler是…
📅 2026/6/29 16:44:07
在商业化内容生产、项目策划、短视频脚本开发场景中,AI模型的创意发散能力、逻辑架构能力、落地执行能力是核心考核指标。不同大模型的训练侧重不同,在方案撰写、脚本创作场景的输出质量差距极大。
为给技术从业者、内容创作者、运营人员提供精准的模型…
📅 2026/6/29 0:00:42
1. 这不是教科书里的“蒙特卡洛离策略”,而是我在强化学习项目里亲手调通的那套逻辑“Monte Carlo Off-Policy Explained”——看到这个标题,别急着去翻Sutton那本绿皮书第5章。我带过三个工业级强化学习落地项目,从智能仓储调度到金融风控策…
📅 2026/6/29 0:00:43
1. 转型背景与核心驱动力最近几年,身边不少做Java后端开发的朋友,都开始或多或少地关注起安全开发这个方向。我自己也是从写了七八年Java业务代码,一步步转向了安全领域,现在主要做代码审计和自动化安全工具开发。这个转变不是一时…
📅 2026/6/29 0:00:43
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/6/29 4:18:42
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/6/29 4:18:42