恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Kimi LeetCode LCP 14. 切分数组 Java实现

  • 首页
  • 资讯中心
  • /
  • Kimi LeetCode LCP 14. 切分数组 Java实现

相关资讯

2026新版Dify实战:从零部署到20+AI应用工作流搭建 2026/8/20 11:48:06
Windows环境容器化:用Docker管理开发环境依赖冲突 2026/8/20 11:48:06
基于SpringBoot的旧物回收商城系统的设计与实现毕业设计项目源码 2026/8/20 11:43:06

最新资讯

深入解析XMC1302 MCU执行速度:从时钟总线到代码优化的嵌入式实战
《RPA、Agent、工作流、低代码全都火了:企业到底该押哪一个?》
Happy Island Designer 上手全攻略:在浏览器里从零规划你的动森岛屿
B站视频下载工具bilibili-downloader:免费解锁4K与充电专属内容的开源神器
告别Wand高级功能付费:Wand-Enhancer三步解锁全功能
qmcflac转mp3终极实操指南:一条命令批量解锁QQ音乐加密歌曲

今日推荐

类模板模板参数的全部使用场景
多态的理解,虚函数表的理解
C++ 类编译器自动生成的默认函数 | 拷贝构造函数 vs 拷贝赋值运算符(赋值构造)

本周热门

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码
【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码
隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Kimi LeetCode LCP 14. 切分数组 Java实现

发布时间:2026/8/20 11:48:06
Kimi    LeetCode LCP 14. 切分数组 Java实现 以下是 LeetCode LCP 14. 切分数组 的 Java 实现基于 质因数分解 动态规划 的经典解法。解题思路1. 预处理最小质因数用线性筛预处理出 110⁶ 每个数的最小质因数 minPrime[i]方便后续快速分解质因数2. 动态规划dp[i] 表示前 i 个数即 nums[0..i-1]能切分的最少数组个数3. 关键优化对每个质因数 p维护 pFlag[p] 表示以质因数 p 为桥梁连接时前序状态的最小值状态转移- 每个新数 nums[i] 要么单独成组dp[i1] dp[i] 1- 要么与前面某个有相同质因数的数组成一组找到前面有相同质因数的位置 j则 dp[i1] dp[j] 1javaclass Solution {// 预处理最小质因数线性筛private static final int MAX 1000000;private static int[] minPrime new int[MAX 1];private static boolean initialized false;private static void init() {if (initialized) return;// minPrime[i] 表示 i 的最小质因数for (int i 2; i MAX; i) {if (minPrime[i] 0) {// i 是质数for (int j i; j MAX; j i) {if (minPrime[j] 0) {minPrime[j] i;}}}}initialized true;}public int splitArray(int[] nums) {init();int n nums.length;// dp[i] 表示前 i 个数nums[0..i-1]能切分的最少数组个数int[] dp new int[n 1];// pFlag[p] 表示以质因数 p 为桥梁时前序状态的最小值// 初始化为一个较大值int[] pFlag new int[MAX 1];for (int i 0; i MAX; i) {pFlag[i] n; // 初始化为 n最大可能值}dp[0] 0; // 0个数需要0个子数组for (int i 1; i n; i) {int x nums[i - 1];// 默认情况当前数单独成一组dp[i] dp[i - 1] 1;// 分解 nums[i-1] 的所有质因数int temp x;while (temp 1) {int p minPrime[temp];// 找到之前出现过质因数 p 的位置// pFlag[p] 记录的是 dp[j] 的最小值其中 j 是前面某个以 p 为质因数的数的位置dp[i] Math.min(dp[i], pFlag[p] 1);// 更新 pFlag[p]当前位置 i-1 之前的状态 dp[i-1]// 注意这里存的是 dp[i-1]因为如果从 i 位置开始新的一组前面是 [0, i-2]pFlag[p] Math.min(pFlag[p], dp[i - 1]);// 去掉所有 p 因子while (temp % p 0) {temp / p;}}}return dp[n];}}关键点说明步骤 说明线性筛预处理 预处理 110⁶ 的最小质因数时间 O(MAX log log MAX)空间 O(MAX)质因数分解 利用 minPrime 数组每次除以最小质因数快速分解pFlag 数组 对每个质因数 p记录以 p 为桥梁时前序状态的最小 dp 值状态转移 dp[i] min(dp[i-1]1, min(pFlag[p]1))其中 p 是 nums[i-1] 的所有质因数复杂度分析- 时间复杂度O(MAX log log MAX n × log(nums[i]))其中 MAX 10⁶- 线性筛预处理O(MAX log log MAX)- 每个数分解质因数O(log nums[i])- 空间复杂度O(MAX n)主要是 minPrime 和 pFlag 数组示例验证输入: nums [2,3,3,2,3,3]输出: 2解释:- nums[0]2, 质因数2, pFlag[2]0, dp[1]1- nums[1]3, 质因数3, pFlag[3]1, dp[2]2- nums[2]3, 质因数3, pFlag[3]min(1,2)1, dp[3]min(3, pFlag[3]12)2- nums[3]2, 质因数2, pFlag[2]min(0,2)0, dp[4]min(3, pFlag[2]11)1- nums[4]3, 质因数3, pFlag[3]min(1,1)1, dp[5]min(2, pFlag[3]12)2- nums[5]3, 质因数3, pFlag[3]min(1,2)1, dp[6]min(3, pFlag[3]12)2最终 dp[6] 2对应 [2,3,3,2] 和 [3,3]

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号