LeetCode 518 和LeetCode 377 的比较
这是之前问题的变种(前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 的比较相关推荐
- LeetCode 518 Coin Change 2 (python)
目录 LeetCode 518 Coin Change 2 (python) Code 欢迎一起来参与leetcode刷题项目 LeetCode 518 Coin Change 2 (python) ...
- 【Leetcode】完全背包问题-377. 组合总和 Ⅳ
[Leetcode]完全背包问题-377. 组合总和 Ⅳ 题目 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素 ...
- 直接用IDEA刷leetcode的插件--Leetcode editor (保姆级安装示例教程)
直接用IDEA刷leetcode的插件–Leetcode editor (保姆级安装示例教程) 你是否还在发愁刷 leetcode 不好debug? 你是否还在往IDEA里粘代码调试好再"C ...
- 模拟卷Leetcode【普通】377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- leetcode:518. 零钱兑换 II
518 零钱兑换 II 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/coin-change-2/ 给你一个整数数组 coins 表示不同面额的硬币 ...
- LeetCode 518. 零钱兑换 II(动态规划)
1. 题目 给定不同面额的硬币和一个总金额. 写出函数来计算可以凑成总金额的硬币组合数. 假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, 2, 5] ...
- leetcode 518 硬币组合种类数
给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, coins = [1, 2, 5] 输出: 4 解 ...
- LeetCode 每日一题 377. 组合总和 Ⅳ
377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target .请你从 nums 中找出并返回总和为 target 的元素组合的个数. 题目数据保证答案符合 32 ...
- leetcode 518. 零钱兑换 II
难度:中等 频次:28 题目: 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额. 请你计算并返回可以凑成总金额的硬币组合数.如果任何硬币组合都无法凑出总金额, ...
最新文章
- xman的思维导图快捷键_Xmind:ZEN思维导图有哪些使用技巧,最实用的快捷键是什么?...
- JavaCV 学习(一):JavaCV 初体验
- 17.丰富的else语句和简洁的with语句
- 《漫画算法》源码整理-2 数组 链表 队列
- CentOS中使用Docker+nginx部署Vue打包的dist项目
- 解决Python中字典出现“TypeError: 'dict_keys' object does not support indexing”错误
- matlab m文件参数传递,请问这个.m文件的参数传什么?
- Harmony OS — ToastDialog提示对话框
- 雨听|生成mac风格代码块
- 4.2.5 求解幂集问题
- goroutine并发扫描MySQL表_【扫描全能王】【干货】Goroutine Channel
- 2021-02-06-身高与车架大小
- 攻防世界-Crypto-告诉你个秘密(键盘密码)-ISCC2017
- 「镁客·请讲」小小牛曹翔:Creative AR让孩子们成为21世纪的“神笔马良”
- pycharm打包程序
- 阿里云短视频SDK for iOS —— (二)静态与动态贴纸拍摄
- SAS:字符串常用函数简介
- 综合布线6A系统产品集锦(一)
- GetMACAddress 在java查询中获取 MACA 地址
- 前端Vue和计网面试题总结