当前位置: 首页 > news >正文

LeetCode 377:组合总和 Ⅳ(Combination Sum IV)—— 题解 ✅

LeetCode 377:组合总和 Ⅳ(Combination Sum IV)—— 题解 ✅

📖 内容概要

给定一个由不同整数组成的数组nums和一个目标整数target
计算并返回所有可能的组合个数,使得这些整数的和为target

元素可重复使用
顺序不同的序列视为不同组合
✅ 本质是完全背包 + 排列计数


💡 解题思路

一、问题本质

  • 数字可以无限使用 ✅
  • [1,1,2][1,2,1][2,1,1]三种方案

👉 这是一个排列问题(Permutation)


二、DP 定义

dp[j]=凑成金额 j 的排列数

三、状态转移方程

dp[j]+=dp[j-nums[i]]

含义:

  • 使用nums[i]作为最后一个数字
  • 新增方案数 = 凑成j - nums[i]的方案数

🔥 核心重点:遍历顺序(本题灵魂)

✅ 正确的遍历顺序(排列数)

for(intj=0;j<=target;j++){// 背包for(inti=0;i<nums.length;i++){// 物品if(j>=nums[i]){dp[j]+=dp[j-nums[i]];}}}
为什么这样写?
层级含义
外层j枚举总金额
内层i枚举所有可用的数字

每一个金额都可以由任意数字结尾
✅ 自然形成排列顺序差异
✅ 得到的是排列数


❌ 错误的遍历顺序(组合数)

for(inti=0;i<nums.length;i++){for(intj=nums[i];j<=target;j++){dp[j]+=dp[j-nums[i]];}}

❌ 会限制数字使用顺序
❌ 只能得到组合数


🔑 记忆口诀(非常重要)

完全背包

  • 组合数:先物品,后背包
  • 排列数:先背包,后物品

✅ AC 代码(Java)

classSolution{publicintcombinationSum4(int[]nums,inttarget){int[]dp=newint[target+1];dp[0]=1;// 凑成 0 有 1 种方式// 先遍历背包for(intj=0;j<=target;j++){// 再遍历物品for(inti=0;i<nums.length;i++){if(j>=nums[i]){dp[j]+=dp[j-nums[i]];}}}returndp[target];}}

⏱️ 复杂度分析

指标复杂度
时间复杂度O(target × nums.length)
空间复杂度O(target)

🔍 与「零钱兑换 II」的对比

题目518. 零钱兑换 II377. 组合总和 IV
是否无限使用
是否区分顺序❌ 不区分✅ 区分
遍历顺序先物品先背包
DP 含义组合数排列数

✅ 一句话总结

完全背包 + 排列计数 = 外层金额、内层物品,正序遍历。

http://www.rkmt.cn/news/1469591.html

相关文章:

  • 2026徐州家装公司五家优质测评,选装修不再踩坑 - 招财兔数字员工
  • 新手福音:用快马ai生成你的第一个公式编辑器,告别mathtype破解版
  • EMW3080调试记录
  • 有没有免费或低成本的工单系统推荐?
  • 如何在3分钟内实现WPS与Zotero的无缝对接:跨平台文献管理终极指南
  • 用Matlab GUI做个指纹锁原型:从图像处理到特征匹配的完整实战(附源码)
  • MatrikonOPC免费工具套件:工业自动化数据集成与通信调试实战指南
  • JEPA范式在VLM中的应用
  • 别再手动刷比分了!5分钟自建一个足球赛事实时数据提醒工具(基于Python脚本)
  • 抖音无水印下载终极指南:从零开始批量下载你的抖音收藏
  • PanelAI开发复盘:从传统行业转型AI创业的真实思考,延期上线背后的复盘与规划
  • 5-2 - HTTPS 协议原理
  • 汽车方向盘控制器技术演进:从电阻匹配到MCU智能协议转换
  • AI会议纪要工具选型指南
  • FPGA高级设计实战:从RTL到高速接口的系统级开发指南
  • Veo 2光影效果失控?4步精准校准曝光响应曲线,附官方未披露Gamma映射对照表(2024 Q3固件实测)
  • CVPR 2021新宠:CoordAttention注意力机制,在MobileNetV2上提升3个点,保姆级代码解读与实战
  • 富士康供应商生存指南:从PCB到MCU,拆解电子制造供应链核心规则
  • [t.9.13] Scrum Meeting 13
  • Veo风格迁移不是魔法,是工程——揭秘Meta内部验证的4类不可迁移场景及2种fallback应急方案
  • 突破JSXBIN加密壁垒:Jsxer如何成为Adobe脚本开发者的得力伙伴
  • 在 Oracle EBS 中,要在同一个 OU(运营单元)下实现不同交易走不同的公司段(Company Segment / Balancing Segment),核心思路是利用 SLA(子分类账会计)
  • 广州恒尔全自动包装生产线:获评工业4.0示范案例,构筑高效生产新生态 - 品牌速递
  • 2026最新!沉香线上购买渠道全链路体验测评:予香高端沉香抖音淘宝双平台实测 - GrowthUME
  • 别再死记ReLU和Sigmoid了!图解吴恩达课程:为什么算法创新让深度学习训练‘快’了10倍
  • 天津收藏圈实测:六大老酒上门回收机构口碑排行榜 - 品牌排行榜单
  • 贝塞尔椭球下大地主题解算MATLAB工具:正算反算一键运行,含图形界面与高斯平均引数法实现
  • 教育部抽检论文的重复率是什么标准?
  • 5个步骤掌握OpenCore引导加载器:从零开始构建Hackintosh系统
  • 【Redis从入门到精通】第62篇:Redis监视器——MONITOR命令的原理与实战