​LeetCode解法汇总518. 零钱兑换 II

news/2024/5/19 19:52:32/文章来源:https://blog.csdn.net/AA5279AA/article/details/137071780

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:. - 力扣(LeetCode)


描述:

给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。

请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。

假设每一种面额的硬币有无限个。 

题目数据保证结果符合 32 位带符号整数。

示例 1:

输入:amount = 5, coins = [1, 2, 5]
输出:4
解释:有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1

示例 2:

输入:amount = 3, coins = [2]
输出:0
解释:只用面额 2 的硬币不能凑成总金额 3 。

示例 3:

输入:amount = 10, coins = [10] 
输出:1

提示:

  • 1 <= coins.length <= 300
  • 1 <= coins[i] <= 5000
  • coins 中的所有值 互不相同
  • 0 <= amount <= 5000

解题思路:

使用动态规划,amoutDp[i]代表到总额为i时所有的组合可能。

正常来说,我们会先求1,在求2,3。但是这样会有一个问题,以amout=5,coins=[1,2,5]为例。当i=3时,3=1+2和3=2+1,这两个很明显重复了,导致重复计算。

所以,我们需要换一种思路,首先求仅使用1求[1,5]范围内每个位置有多少种可能,然后使用1,2求[2,5]范围内每个位置有多少种可能,最后使用[1,2,5]求[5,5]范围内有多少种可能。这样就确定了顺序,确保不会存在先选后选的问题。

代码:

class Solution518
{
public:int change(int amount, vector<int> &coins){vector<int> amountDp(amount + 1, 0);amountDp[0] = 1;for (int coin : coins){for (int i = coin; i <= amount; i++){amountDp[i] += amountDp[i - coin];}cout << amountDp.size() << endl;}return amountDp[amount];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1031429.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django(二)-搭建第一个应用(1)

一、项目环境和结构 1、项目环境 2、项目结构 二、编写项目 1、创建模型 代码示例: import datetimefrom django.db import models from django.utils import timezone# Create your models here.class Question(models.Model):question_text models.CharField(max_length2…

优化页面加载时间:改善用户体验的关键

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、为什么页面加载时间重要&#xff1f; 二、如何减少页面加载时间&#xff1f; …

http请求之springboot中多种注解的使用

见网页侧边目录树可索引查看 一、PathVariable 注&#xff1a;{name} 与 注解配置使用 curl-linux curl --location --request GET http://localhost:8090/test/requestTest/pathReq/aliens \ --header User-Agent: Apifox/1.0.0 (https://apifox.com) \ --header Content-Ty…

Android笔记(三十):PorterDuffXfermode实现旋转进度View

背景 核心原理是使用PorterDuffXfermode Path来绘制进度&#xff0c;并实现圆角 效果图 Android笔记(三十)效果演示 进度条绘制步骤 将ImageView矩形七个点的坐标存储起来&#xff08;configNodes&#xff09; 他们对应着7个不同的刻度&#xff0c;每个刻度的值 i * &#…

深度学习中的“激活函数”

AI大模型学习 方向一:AI大模型学习的理论基础 提示:探讨AI大模型学习的数学基础、算法原理以及模型架构设计等。可以深入分析各种经典的深度学习模型,如卷积神经网络(CNN)、循环神经网络(RNN)以及Transformer等,并讨论它们在大规模数据处理中的优势与挑战。 激活函…

IntellIJ Idea 内存不足时怎么设置

文章目录 前言背景一、 内存显示二、 在IDEA中设置内存三 、在IDEA中打开内存的设置文件四、 JetBrains ToolBox 中安装 IntellIJ Idea配置文件位置总结 前言 请各大网友尊重本人原创知识分享&#xff0c;谨记本人博客&#xff1a;南国以南i、 提示&#xff1a;以下是本篇文章…

【opencv】教程代码 —ImgProc (8) 通过傅里叶变换对图像去除周期性噪声

8. periodic_noise_removing_filter.cpp通过傅里叶变换对图像去除周期性噪声 /** * brief 你将学会如何在傅立叶域中去掉周期性噪声 * author Karpushin Vladislav, karpushinngs.ru, https://github.com/VladKarpushin */ #include <iostream> // 引入C的标准输入输出…

深度学习中的“正则化技术”

AI大模型学习 方向一:AI大模型学习的理论基础 正则化技术在机器学习和深度学习中是避免模型过拟合的关键方法。过拟合发生在模型对训练数据学得太好,以至于它失去了泛化到未见数据上的能力。简而言之,正则化就是在模型训练过程中添加某种形式的约束或惩罚,以防止模型变得…

小白了解Pinia第1集 · 快速入门以及状态State

全文参考pinia中文官网&#xff0c;对官网的知识作了一个小笔记&#xff0c;仅供自用。并且结合公司实际项目进行整理与学习&#xff0c;请各位小伙伴指正~ pinia中文官网链接&#xff1a;http://pinia.cc/docs/introduction.html Pinia介绍 Pinia 是 Vue 的存储库&#xff0…

vuees6新语法

vue的学习网站&#xff1a; https://www.runoob.com/vue2/vue-tutorial.html1.Vue的介绍 学习目标 说出什么是Vue能够说出Vue的好处能够说出Vue的特点 内容讲解 【1】Vue介绍 1.vue属于一个前端框架&#xff0c;底层使用原生js编写的。主要用来进行前端和后台服务器之间的…

【御控物联】 JavaScript JSON结构转换(4):对象To对象——规则属性重组

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

numpy系统学习1

快速入门用例 dot()函数 Python的NumPy库中dot()函数详解 dot()函数可以通过NumPy库调用&#xff0c;也可以由数组实例对象进行调用。例如&#xff1a;a.dot(b) 与 np.dot(a,b)效果相同。但矩阵积计算不遵循交换律,np.dot(a,b) 和 np.dot(b,a) 得到的结果是不一样的 注意&am…

SAP BTP云上一个JVM与DB Connection纠缠的案例

前言 最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM &#xff08;app进程&#xff09;与数据库连接两大块&#xff0c;稍有不慎&#xff0c;很容易引起不快。 在云环境下&#xff0c;有时候相互扯皮的事蛮多。如果是DB的问题&#xff0c;就会找DB…

西南交大swjtu算法实验3.3|穷举法

1.实验目的 通过具体例子学习排列这种典型的穷举算法的求解过程以及程序框架&#xff0c;分析其算法的求解过程&#xff0c;以及如何设计穷举法解决实际问题。通过本实验&#xff0c;理解穷举法的特点以及实际应用中的局限性。 2.实验任务 有n (n>1&#xff09;个任务需要…

Chatgpt掘金之旅—有爱AI商业实战篇(二)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、前言&#xff1a; 成为一名商业作者是一个蕴含着无限可能的职业选择。在当下数字化的时代&#xff0c;作家们有着众多的平台可以展示和推广自己的作品。无论您是对写书、文…

进程知识点

引用的文章&#xff1a;操作系统——进程通信&#xff08;IPC&#xff09;_系统ipc-CSDN博客 面试汇总(五)&#xff1a;操作系统常见面试总结(一)&#xff1a;进程与线程的相关知识点 - 知乎 (zhihu.com) 二、进程的定义、组成、组成方式及特征_进程的组成部分必须包含-CSDN博…

node.js的错误处理

当我打开一个不存在的文件时&#xff0c;错误如下&#xff1a; 在读取文件里面写入console.log&#xff08;err&#xff09;&#xff0c;在控制台中可以看到我的错误代码类型&#xff1a;文件不存在的错误代码 ENOENT。见更多错误代码---打开node.js官方API文档Error 错误 | N…

事件穿透效果

讲述一下事件穿透的需求&#xff0c;大家可以根据实际情况来考虑是否采用这种方式来制作页面&#xff0c;&#xff08;项目中遇到了底部是地图&#xff0c;两侧面板&#xff0c;但是UI在设计的时候为了好看&#xff0c;会有很大的遮罩阴影部分&#xff0c;如果按照时间制作会导…

[flask]session的基本使用

Cookie和Session的区别&#xff08;面试必备&#xff09;_cookie和session的作用和区别-CSDN博客 cooike和session都是用来跟踪浏览器用户身份的会话方式 ookie数据存放在客户的浏览器上&#xff0c;session数据放在服务器上 cooike相对于session来说的话&#xff0c;安全性没…

结合Transformer与Mamba,Jamba来了!

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 近期AI相关资讯&#xff0c;一起看看吧~ X 的 Grok 得到重大升级 马斯克的人工智能初创公司X.ai推出了Grok-1.5&#xff0c;是Grok聊天机器人的升级版AI模型。该新版本增强了推理能力&#xff0c;特…