day38|leetcode 322零钱兑换,279.完全平方数,139.单词拆分

news2025/2/5 11:02:36

322. 零钱兑换

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

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

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

这题与零钱兑换II的区别在于本题需要返回最小数

动规五部曲:

(1)dp数组的含义:dp[j]代表凑成总金额为j所需的最少的硬币个数

(2)确定递推公式:dp[j-coins[i]]就是凑成j-coins[i]所需的最少的硬币个数,加上coins[i]就是dp[j]即dp[j-coins[i]]+1,由于求的是最小值,所以dp[j]=min(dp[j-coins]+1,dp[j]);

(3)初始化:dp[0]=0,由递推公式可知为了防止0覆盖之后的所有元素,除了dp[0]其他位置都应该初始化为非零数

(4)确定遍历顺序:由于求的是最小值,所以并不需要考虑组合数还是排列数

(5)打印dp数组

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        int bagweight = amount;
        vector<int>dp(bagweight+1,INT_MAX);
        dp[0]=0;
        for(int i=0;i<coins.size();i++)//先遍历物品
        {
            for(int j=coins[i];j<=bagweight;j++)
            {
                if(dp[j-coins[i]]!=INT_MAX)//如果等于初始值就跳过
                   dp[j]=min(dp[j-coins[i]]+1,dp[j]);
            }
        }
        if(dp[bagweight]==INT_MAX)return -1;
        return dp[bagweight];
    }
};

279. 完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,14916 都是完全平方数,而 311 不是。

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4

题目分析:背包容量就是n,完全平方数就是物品

完全平方数就是i*i

动规五部曲:

(1)dp[j]含义:和为j的完全平方数的最少数量

(2)确定递推公式:dp[j]=min(dp[j-i*i]+1,dp[j]);

(3)初始化:dp[0]=0,为了防止后续的值被覆盖,除了dp[0]其他都应该初始化为INT_MAX

(4)确定遍历顺序:求最小值不强调组合数还是排列数

(5)打印dp数组

class Solution {
public:
    int numSquares(int n) {
        int bagweight = n;
        vector<int>dp(bagweight+1,INT_MAX);
        dp[0]=0;
        for(int j=0;j<=n;j++)//先遍历背包
        {
            for(int i=1;i*i<=j;i++)
            {
                dp[j]=min(dp[j-i*i]+1,dp[j]);
            }
        }
        return dp[bagweight];
    }
};

139. 单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。

题意分析:字符串是s,单词是物品

动规五部曲:

(1)dp[j]含义:dp[j] : 字符串长度为i的话,dp[j]为true,表示可以拆分为一个或多个在字典中出现的单词

(2)确定递推公式:如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里,那么dp[i]一定是true。(j < i )。

所以递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] = true。

(3)初始化:由递推公式可知,dp[0]决定了后续的,所以dp[0]=true,其他设为false

(4)确定遍历顺序:先遍历背包后遍历物品,因为s="apple pen apple" 时s=apple+pen+apple,其他顺序不是s,所以强调顺序,也就是属于排列数

(5)打印dp数组

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
      unordered_set<string>wordSet(wordDict.begin(),wordDict.end());
      vector<bool>dp(s.size()+1,false);
      dp[0]=true;
      for(int j=1;j<=s.size();j++)//先遍历背包
      {
        for(int i=0;i<j;i++)//再遍历物品
        {
            string str = s.substr(i,j-i);
            if(wordSet.find(str)!=wordSet.end() && dp[i])
            {
                dp[j]=true;
            }
        }
      }
      return dp[s.size()];
    }
};

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

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

相关文章

【Linux系统】信号:信号保存 / 信号处理、内核态 / 用户态、操作系统运行原理(中断)

理解Linux系统内进程信号的整个流程可分为&#xff1a; 信号产生 信号保存 信号处理 上篇文章重点讲解了 信号的产生&#xff0c;本文会讲解信号的保存和信号处理相关的概念和操作&#xff1a; 两种信号默认处理 1、信号处理之忽略 ::signal(2, SIG_IGN); // ignore: 忽略#…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.6 广播机制核心算法:维度扩展的数学建模

2.6 广播机制核心算法&#xff1a;维度扩展的数学建模 目录/提纲 #mermaid-svg-IfELXmhcsdH1tW69 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IfELXmhcsdH1tW69 .error-icon{fill:#552222;}#mermaid-svg-IfELXm…

硬件产品经理:需求引力模型(DGM)

目录 1、DGM 模型简介 2、理论核心&#xff1a;打破传统线性逻辑 3、三大定律 第一定律&#xff1a;暗物质需求法则 第二定律&#xff1a;引力井效应 第三定律&#xff1a;熵减增长律 4、落地工具包 工具1&#xff1a;需求密度热力图 工具3&#xff1a;摩擦力歼灭清单…

Guided Decoding (借助FSM,有限状态自动机)

VLLM对结构化输出的支持&#xff1a; vllm/docs/source/features/structured_outputs.md at main vllm-project/vllm GitHub VLLM对tool call的支持&#xff1a; vllm/docs/source/features/tool_calling.md at main vllm-project/vllm GitHub 以上指定输出格式&#xf…

ComfyUI工作流 图像反推生成人像手办人像参考(SDXL版)

文章目录 图像反推生成人像手办人像参考SD模型Node节点工作流程效果展示开发与应用图像反推生成人像手办人像参考 本工作流旨在通过利用 Stable Diffusion XL(SDXL)模型和相关辅助节点,实现高效的人像参考生成和手办设计。用户可通过加载定制的模型、LORA 调整和控制节点对…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取

2.5 高级索引应用&#xff1a;图像处理中的区域提取 目录/提纲 #mermaid-svg-BI09xc20YqcpUam7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BI09xc20YqcpUam7 .error-icon{fill:#552222;}#mermaid-svg-BI09xc20…

响应式编程_01基本概念:前世今生

文章目录 引言响应式编程的技术优势全栈式响应式编程从传统开发模式到异步执行技术Web 请求与 I/O 模型异步调用的实现技术回调Future机制 响应式编程实现方法观察者模式发布-订阅模式数据流与响应式 响应式宣言和响应式系统 引言 大流量、高并发的访问请求的项目&#xff0c;…

LabVIEW如何有效地进行数据采集?

数据采集&#xff08;DAQ&#xff09;是许多工程项目中的核心环节&#xff0c;无论是测试、监控还是控制系统&#xff0c;准确、高效的数据采集都是至关重要的。LabVIEW作为一个图形化编程环境&#xff0c;提供了丰富的功能来实现数据采集&#xff0c;确保数据的实时性与可靠性…

vue声明周期及其作用

vue声明周期及其作用 1. 生命周期总览 2. beforeCreate 我们在new Vue()时&#xff0c;初始化一个Vue空的实例对象&#xff0c;此时对象身上只有默认的声明周期函数和事件&#xff0c;此时data,methods都未被初始化 3. created 此时&#xff0c;已经完成数据观测&#xff0…

安全策略实验

安全策略实验 1.拓扑图 2.需求分析 需求&#xff1a; 1.VLAN 2属于办公区&#xff0c;VLAN 3属于生产区 2.办公区PC在工作日时间&#xff08;周一至周五&#xff0c;早8到晚6&#xff09;可以正常访问OA server其他时间不允许 3.办公区PC可以在任意时刻访问Web Server 4.生产…

蓝桥杯C语言组:暴力破解

基于C语言的暴力破解方法详解 暴力破解是一种通过穷举所有可能的解来找到正确答案的算法思想。在C语言中&#xff0c;暴力破解通常用于解决那些问题规模较小、解的范围有限的问题。虽然暴力破解的效率通常较低&#xff0c;但它是一种简单直接的方法&#xff0c;适用于一些简单…

七. Redis 当中 Jedis 的详细刨析与使用

七. Redis 当中 Jedis 的详细刨析与使用 文章目录 七. Redis 当中 Jedis 的详细刨析与使用1. Jedis 概述2. Java程序中使用Jedis 操作 Redis 数据2.1 Java 程序使用 Jedis 连接 Redis 的注意事项2.2 Java程序通过 Jedis当中操作 Redis 的 key 键值对2.3 Java程序通过 Jedis 当中…

NLP深度学习 DAY5:Sequence-to-sequence 模型详解

Seq2Seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种用于处理输入和输出均为序列任务的深度学习模型。它最初被设计用于机器翻译&#xff0c;但后来广泛应用于其他任务&#xff0c;如文本摘要、对话系统、语音识别、问答系统等。 核心思想 Seq2Seq 模型的目标是将…

04树 + 堆 + 优先队列 + 图(D1_树(D17_综合刷题练习))

目录 1. 二叉树的前序遍历&#xff08;简单&#xff09; 1.1. 题目描述 1.2. 解题思路 方法一&#xff1a;递归&#xff08;推荐使用&#xff09; 方法二&#xff1a;非递归&#xff08;扩展思路&#xff09; 2. 二叉树的中序遍历&#xff08;中等&#xff09; 2.1. 题目…

总结11..

#include <stdio.h> #include <string.h> #define MAXN 1001 #define MAXM 1000001 int n, m; char maze[MAXN][MAXN]; int block[MAXN][MAXN]; // 标记每个格子所属的连通块编号 int blockSize[MAXN * MAXN]; // 记录每个连通块的大小 int dx[] {0, 0, 1, -1};…

35.Word:公积金管理中心文员小谢【37】

目录 Word1.docx ​ Word2.docx Word2.docx ​ 注意本套题还是与上一套存在不同之处 Word1.docx 布局样式的应用设计页眉页脚位置在水平/垂直方向上均相对于外边距居中排列&#xff1a;格式→大小对话框→位置→水平/垂直 按下表所列要求将原文中的手动纯文本编号分别替换…

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址&#xff1a;https://arxiv.org/pdf/2405.14767 Github地址&#xff1a;https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…

【网络】应用层协议http

文章目录 1. 关于http协议2. 认识URL3. http协议请求与响应格式3.1 请求3.2 响应 3. http的常见方法4. 状态码4.1 常见状态码4.2 重定向 5. Cookie与Session5.1 Cookie5.1.1 认识Cookie5.1.2 设置Cookie5.1.3 Cookie的生命周期 5.2 Session 6. HTTP版本&#xff08;了解&#x…

React+AI 技术栈(2025 版)

文章目录 核心&#xff1a;React TypeScript元框架&#xff1a;Next.js样式设计&#xff1a;Tailwind CSSshadcn/ui客户端状态管理&#xff1a;Zustand服务器状态管理&#xff1a;TanStack Query动画效果&#xff1a;Motion测试工具表格处理&#xff1a;TanStack Table表单处理…