代码随想录算法训练营第38天|LeetCode 322. 零钱兑换、279.完全平方数、139.单词拆分

1. LeetCode 322. 零钱兑换

题目链接:https://leetcode.cn/problems/coin-change/description/
文章链接:https://programmercarl.com/0322.零钱兑换.html
视频链接:https://www.bilibili.com/video/BV14K411R7yv/

在这里插入图片描述

思路:
硬币无限,即:完全背包
求最少硬币个数,不是组合和排列
物品:coins
背包:总金额为amount的背包
重量:金额
价值:硬币个数

解法
class Solution {public int coinChange(int[] coins, int amount) {// 硬币无限 完全背包// 求最少硬币个数。不是组合和排列// 物品:coins// 背包:总金额为amount的背包// 重量:金额// 价值:硬币个数// 1. 定义dp数组// dp[j]表示总金额j所需的最少硬币个数int[] dp = new int[amount+1];// 2.递推公式// dp[j] = Math.min(dp[j-coins[i]]+1,dp[j]);// 3.初始化dp[0] = 0;for (int i=1;i< dp.length;i++) {dp[i] = Integer.MAX_VALUE;}// 4.遍历顺序 先物品再背包for (int i=0;i<coins.length;i++) {for (int j=coins[i];j<=amount;j++) {//只有dp[j-coins[i]]不是初始最大值时,该位才有选择的必要if (dp[j - coins[i]] != Integer.MAX_VALUE) {//选择硬币数目最小的情况dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);}}}return dp[amount]==Integer.MAX_VALUE?-1:dp[amount];}
}

注意:使用递推公式之前,必须确保dp[j - coins[i]] != Integer.MAX_VALUE,否则就是在最大值的基础上加一。

2. LeetCode 279.完全平方数

题目链接:https://leetcode.cn/problems/perfect-squares/description/
文章链接:https://programmercarl.com/0279.完全平方数.html
视频链接:https://www.bilibili.com/video/BV12P411T7Br/

在这里插入图片描述

思路:
可重复取完全平方数,即完全背包
最少数量,不是组合、排列
物品:[11,22,…,n*n]
背包:和为n的背包
重量:完全平方数
价值:完全平方数的数量

解法:
class Solution {public int numSquares(int n) {//可重复取完全平方数 完全背包//最少数量,不是组合、排列//物品:[1,2^2,...,n^2]//背包:和为n的背包//重量:完全平方数//价值:完全平方数的数量int[] nums = new int[n];for (int i=0;i<n;i++) {nums[i] = (i+1)*(i+1);}//1.定义dp数组//dp[j]表示和为j的完全平方数最少数量int[] dp = new int[n+1];//2.递推公式//dp[j] = Math.min(dp[j],dp[j-nums[i]]+1);//3.初始化int max = Integer.MAX_VALUE;for (int i=0;i<dp.length;i++) {dp[i] = max;}dp[0]=0;//4.遍历顺序 先物品再背包for (int i=0;i<nums.length;i++) {for (int j=nums[i];j<=n;j++) {if (dp[j-nums[i]]!=max) {dp[j] = Math.min(dp[j],dp[j-nums[i]]+1);}}}return dp[n];}
}

3. LeetCode 139.单词拆分

题目链接:https://leetcode.cn/problems/word-break/description/
文章链接:https://programmercarl.com/0139.单词拆分.html
视频链接:https://www.bilibili.com/video/BV1pd4y147Rh/

在这里插入图片描述

思路:
可重复取,即完全背包
物品有顺序,排列
物品:wordDict
背包: 字符串s的背包
重量:字符串
价值:是否能拼成s

class Solution {public boolean wordBreak(String s, List<String> wordDict) {// 可重复取,即完全背包// 排列// 物品:wordDict// 背包: 字符串s的背包// 重量:字符串// 价值:是否能拼成s//1.定义dp数组 dp[j]表示前j个字符组成的字符串是否有单词拼接成功boolean[] dp = new boolean[s.length()+1];//2.递推公式//if(dp[j-wordDict.get(i).length()]&&(wordDict.get(i).equals(s.substring(j-wordDict.get(i).length(),j)))) dp[j]=true;//3.初始化dp[0]=true;//4.遍历顺序for (int j=1;j<=s.length();j++) {for (int i=0;i<wordDict.size();i++) {int len = wordDict.get(i).length();if((j-len>=0)&&(wordDict.get(i).equals(s.substring(j-len,j)))&&dp[j-len]) {dp[j]=true;break;}}}return dp[s.length()];}
}

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

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

相关文章

实现领域驱动设计(DDD)系列详解:领域模型的持久化

领域驱动设计主要通过限界上下文应对复杂度&#xff0c;它是绑定业务架构、应用架构和数据架构的关键架构单元。设计由领域而非数据驱动&#xff0c;且为了保证定义了领域模型的应用架构和定义了数据模型的数据架构的变化方向相同&#xff0c;就应该在领域建模阶段率先定义领域…

我的世界!

每位冒险家在《我的世界》中的出生点都各不相同&#xff0c; 有的出生在桦木森林&#xff0c;有的出生在草原&#xff0c; 还有的出生在临近海洋的沙滩。 这些环境叫做生物群系&#xff0c;也常被称为生态系统。 在《我的世界》中的不同生物群系具有不同的地域特色—— 不…

本地化部署一个简单的AI大模型,Llama3.1

7 月 23 日消息&#xff0c;Meta 今晚正式发布llama3.1&#xff0c;提供 8B、70B 及 405B 参数版本。 Meta 称 4050 亿参数的 Llama 3.1-405B 在常识、可引导性、数学、工具使用和多语言翻译等一系列任务中&#xff0c;可与 GPT-4、GPT-4o、Claude 3.5 Sonnet 等领先的闭源模型…

Qt遇到qt自身组件找不到

比如在使用qtcharts的时候&#xff0c;找不到 解决方法&#xff1a; 在cmakelist中添加 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Charts REQUIRED) 是一个 CMake 命令&#xff0c;用于查找并配置 Qt 库中的特定组件。这条命令的作用是找到 Qt 的主要版本&#xff08;…

ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案

对于全球的环境保护意识抬头&#xff0c;全球的汽车产业慢慢步入电动化的时代&#xff0c;以减少碳排放。整车系统主要是由电池、电驱、电控的三电所构成&#xff0c;其中电池系统是整车的动力来源&#xff0c;而对电池充电的OBC系统更甚重要。一具高度安全性且高效的OBC系统&a…

MybatisPlus设置动态表名

对于一些数据量比较大的表&#xff0c;为了提高查询性能&#xff0c;我们一般将表拆分成多张表&#xff0c;常见的是根据数据量&#xff0c;按年分表或者按月分表&#xff1b;分表虽然太高了查询性能&#xff0c;但是在查询的时候&#xff0c;如何才能查询执行分表数据呢&#…

7.25扣...

思路&#xff1a;别的语言都可以不用辅助数组&#xff0c;我Java就得用&#xff01; c:先计算字符串中数字个数&#xff0c;然后利用双指针将原本字符串逆序从数组最后往前插入&#xff0c;若遇到数字则替换为逆序的“number”&#xff0c;这个过程会使新字符串从后往前覆盖&am…

UI界面卡顿检测工具--UIHaltDetector

引言&#xff1a; 在日常工作当中&#xff0c;我们经常会遇到软件的界面出现卡顿的问题&#xff0c;而为了确定卡顿原因&#xff0c;我特地写了一个UI界面卡顿的小工具&#xff1a;UIHaltDetector&#xff1b;该工具可以在检测到目标窗口出现卡顿的时候直接打印堆栈日志和输出…

MySQL SQL 编程练习

目录 创建表并插入数据 查看表结构 创建触发器 创建INSERT 触发器 创建DELETE 触发器 创建更新触发器 创建存储过程 创建提取emp_new表所有员工姓名和工资的存储过程s1 创建存储过程s2&#xff0c;实现输入员工姓名后返回员工的年龄 创建一个存储过程s3&#xff0c;有2个参数&…

springboot校园商店配送系统-计算机毕业设计源68448

摘要 本文详细阐述了基于Spring Boot框架的校园商店配送系统的设计与实现过程。该系统针对校园内的用户需求&#xff0c;整合了用户注册与登录、商品浏览与购买、订单管理、配送追踪、用户反馈收集以及后台管理等功能&#xff0c;为校园内的普通用户、商家、配送员和管理员提供…

算法与算法分析

目录 一.前言 二.算法的特性和要求 三.分析算法--时间效率 四. 分析算法--空间效率 一.前言 算法就是对特定问题求解方法和步骤的一种描述&#xff0c;它是指令的有限序列。其中&#xff0c;每个指令表示一个或多个操作。总而言之&#xff0c;我们数据结构就是通过算法实现操…

FPGA实现LCD1602控制

目录 注意&#xff01; 本工程采用野火征途PRO开发板&#xff0c;外接LCD1602部件进行测试。 有偿提供代码&#xff01;&#xff01;&#xff01;可以定制功能&#xff01;&#xff01;&#xff01; 联系方式见底部 一、基础知识 1.1 引脚信息 1.2 指令 1.2.1 清屏 1.…

【有效的括号】

有效的括号 一、题目二、思路三、代码 一、题目 二、思路 利用栈先进后出的特点存储左括号&#xff1a;后面遍历遇到的左括号要先闭合 用map存储左括号与右括号的对应关系&#xff0c;利用键值对快速查找右括号进行匹配 三、代码 使用.has()方法判断当前遍历的字符是否是右括…

项目架构知识点总结

项目架构知识点总结 【一】重要注解【1】SpringBootApplication&#xff08;1&#xff09;⭐️ComponentScan 注解&#xff08;2&#xff09;⭐️EnableAutoConfiguration 注解&#xff08;3&#xff09;⭐️SpringBootConfiguration 注解&#xff08;4&#xff09;Inherited 注…

vite+cesium+天地图

创建vite项目 直接在地址栏输入cmd进入命令行&#xff08;vite项目默认为vue3&#xff09; # yarn yarn create vite 项目名称 --template vue 创建成功后依次执行 yarn install yarn dev 安装cesium和vite-plugin-cesium 没有加版本号默认为最新版本 加版本号如cesium1.1…

sql注入的专项练习 sqlilabs(含代码审计)

在做题之前先复习了数据库的增删改查&#xff0c;然后自己用本地的环境&#xff0c;在自己建的库里面进行了sql语句的测试&#xff0c;主要是回顾了一下sql注入联合注入查询的语句和sql注入的一般做题步骤。 1.获取当前数据库 2.获取数据库中的表 3.获取表中的字段名 一、sql…

WordPress 后台开发技巧:向文章发布页右侧添加自定义菜单项

案例图片 这个案例向你介绍了如何在文章发布页的右侧边栏增加一个新的自定义菜单项。具体用它实现什么功能&#xff0c;就看你的需要了。 代码 function add_custom_menu_item() { add_meta_box(custom_menu_item, 这里是菜单项名称, display_custom_menu_item, post, side, …

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(1)-项目搭建(前期准备工作)

这是项目的初始页面 接下来我先写下我的初始项目搭建 技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 首先我们打开页面&#xff0c;准备搭建项目的初始准备 1.New Project 2.随后点击Next&#xff0c;勾…

AttributeError: ‘list‘ object has no attribute ‘text‘

AttributeError: ‘list‘ object has no attribute ‘text‘ 目录 AttributeError: ‘list‘ object has no attribute ‘text‘ 【常见模块错误】 【解决方案】 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英…

IDEA缓存和索引

IDEA缓存和索引 —2020年06月10日 IntelliJ IDEA首次加载项目的时候。都会创建索引&#xff0c;而创建索引的时间根项目的文件多少成正比。 IntelliJ IDEA的缓存和索引主要是用来加快文件查询&#xff0c;从而加快各种查找、代码提示等操作的速度。 某些特殊情况下&#xf…