Leetcode 322 零钱兑换

题意理解

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

        计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

        你可以认为每种硬币的数量是无限的。

        coins表示不同值得元素,有无限个,目标是使用元素凑出目标值最少需要多少个硬币

        这是一个完全背包问题,但不是一个纯背包问题。因为这里问的不是背包里物品的重量或价值,而是最少用多少个硬币。

解题思路

        根据题意,我们可以得到

        dp[j]表示凑出j最少使用dp[j]个硬币

        递推公式:dp[j]=min(dp[j-coins[i]],dp[j])

        从组合数和排列数来看,无论是组合数还是排列数其最少硬币数都是一样的,所以双for循环的顺序是可以颠倒的,对结果无影响。

        由于物体可以重复取用,所以对于背包的遍历选择正序遍历

1.解题

public int coinChange(int[] coins, int amount) {int[] dp=new int[amount+1];Arrays.fill(dp,Integer.MAX_VALUE);dp[0]=0;for(int i=0;i<coins.length;i++){//遍历硬币for(int j=1;j<=amount;j++){//遍历背包if(coins[i]<=j){if(Integer.compare(Integer.MAX_VALUE,dp[j-coins[i]])!=0)dp[j]= Math.min(dp[j-coins[i]]+1,dp[j]);}}}return Integer.compare(Integer.MAX_VALUE,dp[amount])==0?-1:dp[amount];}

2.分析

时间复杂度:O(n^2)

空间复杂度:O(n)

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

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

相关文章

Springboot集成jasypt实现配置文件加密

Jasypt它提供了单密钥对称加密和非对称加密两种加密方式。 单密钥对称加密&#xff1a;一个密钥加盐&#xff0c;可以同时用作内容的加密和解密依据&#xff1b; 非对称加密&#xff1a;使用公钥和私钥两个密钥&#xff0c;才可以对内容加密和解密&#xff1b; 我们以单密钥对称…

前端 reduce()用法总结

定义 reduce()方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行)&#xff0c;将其结果汇总为单个返回值。语法为&#xff1a; array.reduce(function(accumulator, currentValue, currentIndex, arr), initialValue); /*accumulator: 必需。累计器currentValu…

5 步轻松上手,教你从 0 到 1 落地 Jmeter 接口自动化脚本!

Jmeter是进行接口测试的一款非常主流的工具&#xff0c;但绝大部分测试工程师&#xff0c;对于Jmeter接口测试脚本整理都是一知半解的。今天这篇文章&#xff0c;就以一个金融项目中接口为例&#xff0c;通过简单5步&#xff0c;教大家如何0代码编写Jmeter接口自动化脚本&#…

CPU和GPU有什么区别,玩游戏哪个更重要?

大家好&#xff01;今天我们要聊的话题是CPU和GPU&#xff0c;它们在电脑中扮演着重要的角色&#xff0c;虽然看起来只是两个简单的缩写&#xff0c;但它们的功能和影响是截然不同的&#xff01; 那么&#xff0c;究竟CPU和GPU有什么区别呢&#xff1f;在玩游戏时&#xff0c;…

Linux 系统开启网络服务

首先&#xff0c;大家新装的linux系统可能都没有安装vim工具&#xff0c;所以打开文件的方式是 vi /etc/sysconfig/network-scripts/ifcfg-ens33在这个界面把onboot改为yes&#xff0c;我这里是设置完的。然后通过下面语句重新启动服务就可以了。 service network restartcen…

2024.2.7日总结(小程序开发4)

页面导航 页面导航是页面之间的相互跳转&#xff1a; <a>链接location.href 小程序中实现页面导航的两种方式&#xff1a; 声明式导航 在页面上声明一个<navigator>导航组件通过点击<navigator>组件实现页面跳转 编程式导航 调用小程序的导航API&…

飞天使-k8s知识点15-kubernetes散装知识点4-CNI网络插件与kubectl

文章目录 CNI 网络插件安装任意节点运行kubectlAPI的版本区别与废弃API查询 CNI 网络插件安装 这里将以 Calico 为例&#xff0c;提供在 Kubernetes 1.20.6 版本上安装 CNI 插件的步骤。请注意&#xff0c;具体的步骤可能会因 CNI 插件的类型和你的特定环境而略有不同。设置 Ku…

BaseMapper中提供的方法(17种CRUD)

BaseMapper封装的17种增删改查方法 MybatisPlus框架中mapper层继承了BaseMapper接口&#xff0c;该接口中封装了常用的增删改查方法&#xff0c;共有17种&#xff0c;以下是方法的详情介绍 首先需要明确的括号内的一些对象定义 泛型T&#xff1a;实体类类型Param注解&#x…

JavaScript 设计模式之单例模式

单例模式 常规单例 单例模式我们在日常使用中还是非常多的&#xff0c;比如常见的 jQuery&#xff0c;prototype&#xff0c;vue等都是属于单例模式&#xff0c;我们在使用 new Vue 的时候&#xff0c;返回的也会是同一个实例的&#xff0c;简单实现 // 方式一 let Car func…

mybatis-plus循环处理多个条件的 or 查询

我们一般用 mybatis-plus 的提供的 api 接口处理 List、Set 作为条件查询的时候&#xff0c;都会使用 in&#xff0c;例如 &#xff08;Student 类省略 没啥好些的&#xff09;&#xff1a; LambdaQueryWrapper<Student> queryWrapper new QueryWrapper<Student>…

iPhone解锁 AnyMP4 iPhone Unlocker

AnyMP4 iPhone Unlocker是一款功能强大的iPhone解锁软件&#xff0c;旨在帮助用户轻松解决iPhone密码忘记、设备锁定等问题。无论是屏幕密码、指纹解锁还是Face ID&#xff0c;该软件都能提供有效的解决方案。 这款软件支持多种iPhone型号&#xff0c;包括最新的iPhone 14系列…

2.3_9 吸烟者问题

2.3_9 吸烟者问题 问题描述 问题分析 假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它&#xff0c;但是要卷起并抽掉一支烟&#xff0c;抽烟者需要有三种材料&#xff1a;烟草、纸和胶水。三个抽烟者中&#xff0c;第一个拥有烟草、第二个拥有纸…

泛娱乐社交出海洞察,Flat Ads解锁海外增长新思路

摘要:解读泛娱乐社交应用出海现状与趋势,解锁“掘金”泛娱乐社交出海赛道新思路。 根据全球舆情监测机构 Meltwater 和社交媒体机构We are Social最新发布数据显示,全球社交媒体活跃用户数量已突破50亿,约占世界人口总数62.5%。庞大的用户数量意味着广阔的增量空间,目前,随着全…

使用HCPpipelines分割皮层

前段时间阅读了一篇文献,文章的做法我比较感兴趣,所以打算学习一下文献的做法。文章的最开始一部分是使用HCPpipelines对T1和T2像进行皮层分割,调用的是freesurfer6。https://github.com/Washington-University/HCPpipelines 一、工作环境准备 1.安装好FSL,版本在6.0.2以上…

Linux环境下配置HTTP代理服务器教程

大家好&#xff0c;我是你们可爱的Linux小助手&#xff01;今天&#xff0c;我将带你们一起探索如何在Linux环境下配置一个HTTP代理服务器。请注意&#xff0c;这不是一次火箭科学的实验&#xff0c;而是一次简单而有趣的冒险。 首先&#xff0c;我们需要明确什么是HTTP代理服…

Unity AnimationRigging无法修改权重?

个人理解&#xff0c;已解决无法修改权重的问题: unity自带的动画系统是在FixUpdate和Update之后LateUpdate之前执行&#xff0c;如果在这FixedUpdate或Update函数内更新AnimationRigging内的权重后&#xff0c;内部动画系统会覆盖权重的修改&#xff0c;导致无法正确更新&…

通过docker-compose部署NGINX服务,并使该服务开机自启

要在通过docker-compose部署的NGINX服务实现开机自启&#xff0c;你需要确保Docker守护进程在系统启动时自动运行&#xff0c;并配置docker-compose.yml文件以在容器中运行NGINX服务。以下是步骤&#xff1a; 确保Docker守护进程开机启动&#xff1a; 在Ubuntu/Debian上&#x…

FL Studio21最新正式版更新下载及实用功能详解

FL Studio 21是一款功能强大的音乐制作软件&#xff0c;它经历了多个版本的更新&#xff0c;每次更新都会增加新的功能和优化现有功能&#xff0c;提高用户体验和工作效率。以下是FL Studio 21的一些版本更新、功能特点以及下载方式的介绍&#xff1a; 版本更新&#xff1a; F…

ChatGLM3微调遇到的坑

问题&#xff1a;微调的各种问题 THUDM/ChatGLM3 Discussion #253 GitHubshi Traceback (most recent call last):File "/opt/projects/chatglm3-test/scripts/finetune.py", line 171, in <module>main()File "/opt/projects/chatglm3-test/scripts/f…

C++判断回文字符串的两种方法

解法1&#xff1a;遍历一半字符串 若字符串个数为奇数遍历到n/2 若为偶数则遍历到n/2-1中间最后只剩一个字符不需判断 &#xff08;int是向下取整的&#xff09; 假设字符串长度为len&#xff0c;字符下标从0~len-1 先看第0个和第len-1字符是否相同&#xff0c; 在看第1和第…