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/29 16:55:23
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 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
1. 项目概述:为什么是Playwright?如果你正在用Python做UI自动化,还在为Selenium的稳定性头疼,或者被那些动不动就超时、元素定位不到的诡异问题折磨得够呛,那今天聊的这个工具——Playwright,绝对值得你花时…
📅 2026/6/29 17:44:16
🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…
📅 2026/6/29 17:44:16
1. 项目概述:一份面试题库的诞生与价值又到了“金九银十”的招聘旺季,对于软件测试工程师来说,这既是机遇也是挑战。最近,我花了大量时间,系统性地整理、筛选并解答了超过1000道软件测试面试题,涵盖了从功能…
📅 2026/6/29 17:44:16
数据泄露是企业头上的“达摩克利斯之剑”,一份重要文件的外泄可能让企业多年心血付诸东流。如何给文件穿上“防弹衣”?今天推荐5款实用加密软件,尤其是信企卫软件,功能全面且操作友好,堪称加密界的“六边形战士”&…
📅 2026/6/29 17:44:16
1. 项目概述与核心价值在无线通信系统的发射链路里,从FPGA或ASIC输出的数字信号,到最终通过天线辐射出去的模拟射频信号,中间隔着一道关键的“数字世界”与“模拟世界”的鸿沟。这道鸿沟的桥梁,就是数模转换器。我接触过不少DAC芯…
📅 2026/6/29 17:44:16
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/6/29 17:39:15
在商业化内容生产、项目策划、短视频脚本开发场景中,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