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

322. 零钱兑换

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

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

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

示例 1:

输入:coins = [1, 2, 5], amount = 11
输出:3 
解释:11 = 5 + 5 + 1
class Solution {
public:
    int coinChange(vector<int>& coins, int amount) 
    {
        vector<int> dp(amount+1,INT_MAX );
        dp[0] = 0;
        for(int i = 0; i < coins.size(); i++)
        {
            for(int j = coins[i]; j <= amount ; j++)
            {
                if(dp[ j - coins[i]] != INT_MAX)
                {
                    dp[j] = min(dp[j],dp[j - coins[i]]+1);                    
                }
            }
        }
        if(dp[amount] == INT_MAX) return -1;
        return dp[amount];
    }
};

279. 完全平方数

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

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

示例 1:

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4
class Solution {
public:
    int numSquares(int n) 
    {
        vector<int> dp(n+1,INT_MAX);
        dp[0] = 0;
        for(int i = 0 ; i*i <= n;i++ )
        {
            for(int j = i*i; j <= n; j++)
            {
                if(dp[j - i*i] != INT_MAX)
                {
                    dp[j] = min(dp[j],dp[j - i*i]+1);
                }
            }
        }
        return dp[n];
    }
};

139. 单词拆分

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

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

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。
class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) 
    {
        unordered_set<string> mystring(wordDict.begin( ),wordDict.end( ));
        vector<bool> dp(s.size() + 1 , false);
        dp[0] = true;
        for(int i = 1 ; i <= s.size() ; i++)
        {
            for(int j = 0 ; j < i; j++)
            {
                string word = s.substr(j,i-j);//其实位置,截取个数
                //这里为什么需要dp[j]存在
                if(mystring.find(word) != mystring.end() && dp[j]) dp[i] = true;
            }
        }
        return dp[s.size(  )];
    }
};

相关推荐

  1. 代码随想算法训练| 139.单词

    2024-07-16 08:14:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 08:14:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 08:14:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 08:14:02       62 阅读
  4. Python语言-面向对象

    2024-07-16 08:14:02       72 阅读

热门阅读

  1. Redis是什么

    2024-07-16 08:14:02       28 阅读
  2. 机器学习——机器学习概述

    2024-07-16 08:14:02       21 阅读
  3. 深入理解 Vue.js 的生命周期:从创建到销毁

    2024-07-16 08:14:02       27 阅读
  4. 2024.7.10 day 3 比赛总结

    2024-07-16 08:14:02       20 阅读
  5. 大模型 GPT 到 GPT-3.5 知识点总结

    2024-07-16 08:14:02       23 阅读
  6. Python 和 R两者的主要区别和优缺点对比

    2024-07-16 08:14:02       26 阅读
  7. k8s怎么配置secret呢?

    2024-07-16 08:14:02       24 阅读
  8. vue $refs

    2024-07-16 08:14:02       24 阅读
  9. 【php开发系统遇到CPU飙升的思考记录】

    2024-07-16 08:14:02       27 阅读
  10. AppML 案例:Products

    2024-07-16 08:14:02       24 阅读
  11. 深度学习--基础语法

    2024-07-16 08:14:02       20 阅读