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

server/2024/9/25 21:24:39/

今日任务

322. 零钱兑换

  • 题目链接: https://leetcode.cn/problems/coin-change/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:int coinChange(vector<int>& coins, int amount) {int n = coins.size();// vector<vector<int>> memo(n, vector<int>(amount + 1, -1));// function<int(int, int)> dfs = [&](int i, int c) -> int{//     if(i < 0){//         return c == 0 ? 0 : INT_MAX / 2;//     }//     int &res = memo[i][c];//     if(res != -1){//         return res;//     }//     if(c < coins[i]){//         return res = dfs(i - 1, c);//     }//     return res = min(dfs(i - 1, c), dfs(i, c - coins[i]) + 1);// };// int ans = dfs(n - 1, amount);// return ans < INT_MAX /2 ? ans : -1;// dp[i][c] = min(dp[i - 1][c], dp[i][c - coins[i]] + 1)// dp[i + 1][c] = min(dp[i][c], dp[i + 1][c - coins[i]] + 1)// vector<vector<int>> dp(n + 1, vector<int>(amount + 1, INT_MAX / 2));// dp[0][0] = 0;// for(int i = 0; i < n; i++){//     for(int c = 0; c <= amount; c++){//         if(c < coins[i]){//             dp[i + 1][c] = dp[i][c];//         }else{//             dp[i + 1][c] = min(dp[i][c], dp[i + 1][c - coins[i]] + 1);//         }//     }// }// return dp[n][amount] < INT_MAX / 2 ? dp[n][amount] : -1;// 优化// vector<vector<int>> dp(2, vector<int>(amount + 1, INT_MAX / 2));// dp[0][0] = 0;// for(int i = 0; i < n; i++){//     for(int c = 0; c <= amount; c++){//         if(c < coins[i]){//             dp[(i + 1) % 2][c] = dp[i % 2][c];//         }else{//             dp[(i + 1) % 2][c] = min(dp[i % 2][c], dp[(i + 1) % 2][c - coins[i]] + 1);//         }//     }// }// return dp[n % 2][amount] < INT_MAX / 2 ? dp[n % 2][amount] : -1;vector<int> dp(amount + 1, INT_MAX / 2);dp[0] = 0;for(int x : coins){for(int c = x; c <= amount; c++){dp[c] = min(dp[c], dp[c - x] + 1);}}return dp[amount] < INT_MAX / 2 ? dp[amount] : -1;}
};

279.完全平方数

  • 题目链接: https://leetcode.cn/problems/perfect-squares/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:int numSquares(int n) {int end = sqrt(n);vector<vector<int>> memo(end + 1, vector<int>(n + 1, -1));function<int(int, int)> dfs = [&](int i, int c) -> int{if(i == 0){return c == 0 ? 0 : INT_MAX / 2;}int res = memo[i][c];if(res != -1){return res;}int x = i * i;if(c < x){return res = dfs(i - 1, c);}return res = min(dfs(i - 1, c), dfs(i, c - x) + 1);};return dfs(end, n);// vector<int> dp(n + 1, INT_MAX / 2);// dp[0] = 0;// for(int x = 1; x <= end; x++){//     for(int c = x * x; c <= n; c++){//         dp[c] = min(dp[c], dp[c - x * x] + 1);//     }// }// return dp[n];}
};

139.单词拆分

  • 题目链接: https://leetcode.cn/problems/word-break/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {int n = s.size();unordered_set<string> wordSet(wordDict.begin(), wordDict.end());vector<bool> dp(n + 1);dp[0] = true;for(int i = 1; i <= n; i++){for(int j = 0; j < i; j++){string word = s.substr(j, i - j);if(wordSet.contains(word)){dp[i] = dp[i] || dp[j];}}}return dp[n];}
};

http://www.ppmy.cn/server/101574.html

相关文章

c# 什么是扩展方法

官方解释 扩展方法使你能够向现有类型“添加”方法&#xff0c;而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种静态方法&#xff0c;但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码&#x…

抽象代数精解【9】

文章目录 流密码密码体制概述唯吉尼亚密码一、历史与背景二、加密算法三、特点与应用四、破译方法五、原理概述加密过程解密过程注意事项 流密码理论解释一、定义与原理二、特点与优势三、工作原理四、应用实例五、安全性与限制 RC4算法一、算法概述二、算法原理三、算法特点四…

只有IP如何实现https访问

IP也是访问网站的一种方式&#xff0c;现在有很多网站并未绑定域名&#xff0c;而是通过IP直接访问的。 但是域名访问网站的方式会更多一些&#xff0c;主要还是因为域名相较于IP数字要更加好记&#xff0c;所以域名绑定网站的情况会更多。 随着现在网络安全意识的逐渐提升&a…

ios app包应用签名证书指纹SHA256值

获取应用签名证书的指纹&#xff0c;首先要获取给app签名的证书&#xff0c;然后从证书里面获取SHA256签名&#xff0c;具体步骤如下 1 获取iOS app签名证书指纹SHA256值2 导出p12文件3 获取证书指纹SHA256值4 完成 操作步骤及代码 步骤1&#xff1a;首先&#xff0c;你需要…

python爬虫滑块验证及各种加密函数(基于ddddocr进行的一层封装)

git链接: https://github.com/JOUUUSKA/spider_toolsbox 这里写目录标题 一.识别验证码1、识别英文&#xff0b;数字验证码2、识别滑块验证码3、识别点选验证码 二、下载系列1、下载视频2、下载图片3、下载文本 三、常用加密类型1、AES系列2、DES系列3、RSA系列4、SHA系列5、B…

选对BI解决方案,数据才能驱动成功?奥威BI数据可视化方案深度解析

选对BI解决方案&#xff0c;数据才能驱动成功&#xff1f;奥威BI数据可视化方案深度解析 在当今这个数据爆炸的时代&#xff0c;企业面临着前所未有的机遇与挑战。如何有效利用数据&#xff0c;将其转化为推动业务增长和决策优化的关键力量&#xff0c;成为了每个企业都必须面…

文本摘要简介

文本摘要是从一段长文本中提取出最重要的信息&#xff0c;并生成一个简短而有意义的摘要。这个过程可以分为两种主要方法&#xff1a; 抽取式摘要&#xff08;Extractive Summarization&#xff09;&#xff1a;从原文中直接提取出关键句子或段落&#xff0c;组成摘要…

vue里组件化引入svg图标的方式

配置好后可以轻松从iconfont导入svg图标或者任意svg图标。 参考&#xff1a;https://blog.csdn.net/weixin_39729729/article/details/137348970 https://blog.csdn.net/CMDN123456/article/details/139854354 官网https://www.iconfont.cn/help/detail?spma313x.help_detai…