这是之前问题的变种(前3题用回溯法,最后一题用DP)

Leetcode 39:组合总和(最详细的解法!!!)

Leetcode 40:组合总和 II(最详细的解法!!!)

Leetcode 216:组合总和 III(最详细的解法!!!)

Leetcode 377:组合总和 Ⅳ(最详细的解法!!!)

这两道问题很类似~

区别在于:

377 的组合数字之间是有顺序的(对于每个目标,每个数字在不同的顺序中可以重复出现,所以以target的顺序为准来遍历)

518的组合数字是无顺序的(对于每个目标,这个数字在第一次出现和第二次出现是一样的,所以以coins的顺序为准来遍历比较好)

  • i 和 j 的遍历顺序不同

LeetCode 518:

class Solution(object):def change(self, amount, coins):""":type amount: int:type coins: List[int]:rtype: int"""if not coins and amount == 0:return 1elif not coins:return 0if amount < min(coins) and amount > 0:return 0cnt = [0 for j in range(amount+1)] cnt[0] = 1## 用nums的前i个元素,加出j有多少种方法## 得到的nums组合无顺序关系for i in range(1,len(coins)+1):for j in range(coins[i-1],amount+1):cnt[j] += cnt[j-coins[i-1]]return cnt[-1]

LeetCode 377:

class Solution(object):def combinationSum4(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""if not nums or target == 0:return 0cnt = [0 for j in range(target+1)]cnt[0] = 1## 全部的nums[0~i]中加出j,有多少种方法。## 即对于nums的出现是有顺序关系的for j in range(1,target+1):for i in range(1,len(nums)+1):if j >= nums[i-1]:cnt[j] += cnt[j-nums[i-1]]return cnt[-1]

LeetCode 518 和LeetCode 377 的比较相关推荐

  1. LeetCode 518 Coin Change 2 (python)

    目录 LeetCode 518 Coin Change 2 (python) Code 欢迎一起来参与leetcode刷题项目 LeetCode 518 Coin Change 2 (python) ...

  2. 【Leetcode】完全背包问题-377. 组合总和 Ⅳ

    [Leetcode]完全背包问题-377. 组合总和 Ⅳ 题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素 ...

  3. 直接用IDEA刷leetcode的插件--Leetcode editor (保姆级安装示例教程)

    直接用IDEA刷leetcode的插件–Leetcode editor (保姆级安装示例教程) 你是否还在发愁刷 leetcode 不好debug? 你是否还在往IDEA里粘代码调试好再"C ...

  4. 模拟卷Leetcode【普通】377. 组合总和 Ⅳ

    377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...

  5. leetcode:518. 零钱兑换 II

    518 零钱兑换 II 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change-2/ 给你一个整数数组 coins 表示不同面额的硬币 ...

  6. LeetCode 518. 零钱兑换 II(动态规划)

    1. 题目 给定不同面额的硬币和一个总金额. 写出函数来计算可以凑成总金额的硬币组合数. 假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, 2, 5] ...

  7. leetcode 518 硬币组合种类数

    给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, 2, 5] 输出: 4 解 ...

  8. LeetCode 每日一题 377. 组合总和 Ⅳ

    377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...

  9. leetcode 518. 零钱兑换 II

    难度:中等 频次:28 题目: 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额. 请你计算并返回可以凑成总金额的硬币组合数.如果任何硬币组合都无法凑出总金额, ...

最新文章

  1. xman的思维导图快捷键_Xmind:ZEN思维导图有哪些使用技巧,最实用的快捷键是什么?...
  2. JavaCV 学习(一):JavaCV 初体验
  3. 17.丰富的else语句和简洁的with语句
  4. 《漫画算法》源码整理-2 数组 链表 队列
  5. CentOS中使用Docker+nginx部署Vue打包的dist项目
  6. 解决Python中字典出现“TypeError: 'dict_keys' object does not support indexing”错误
  7. matlab m文件参数传递,请问这个.m文件的参数传什么?
  8. Harmony OS — ToastDialog提示对话框
  9. 雨听|生成mac风格代码块
  10. 4.2.5 求解幂集问题
  11. goroutine并发扫描MySQL表_【扫描全能王】【干货】Goroutine Channel
  12. 2021-02-06-身高与车架大小
  13. 攻防世界-Crypto-告诉你个秘密(键盘密码)-ISCC2017
  14. 「镁客·请讲」小小牛曹翔:Creative AR让孩子们成为21世纪的“神笔马良”
  15. pycharm打包程序
  16. 阿里云短视频SDK for iOS —— (二)静态与动态贴纸拍摄
  17. SAS:字符串常用函数简介
  18. 综合布线6A系统产品集锦(一)
  19. GetMACAddress 在java查询中获取 MACA 地址
  20. 前端Vue和计网面试题总结

热门文章

  1. YX150C 纯IO口 8位OTP单片机
  2. js实现唐伯虎‘点‘秋香
  3. docker privileged
  4. 写给程序员的Flutter详细教程,实战解析
  5. 【机器学习】Scikit-Learn数据预处理文档翻译+笔记记录 - 1
  6. 如何设计产品的引流诱饵?如何控制引流产品的成本呢?
  7. Linux系统如何安装?
  8. Android自我进阶总纲—善始者实繁,然克终者盖寡。
  9. apache2.4开启GZIP压缩
  10. ios 安卓 java_java转android或ios?