首页 > 其他分享 >代码随想录day45 | 70. 爬楼梯 322. 零钱兑换 279. 完全平方数

代码随想录day45 | 70. 爬楼梯 322. 零钱兑换 279. 完全平方数

时间:2022-11-09 01:44:56浏览次数:70  
标签:遍历 int 复杂度 coins 随想录 322 vector 70 dp

70. 爬楼梯

题目|文章
image

思路

这道题目要求有序,因此是全背包的排列做法。
1.数组下标以及含义
dp[i]:爬到n台阶一共有dp[i]种方法。
2.递推关系
dp[i] += dp[i - j];
3.初始化
dp[0]=1可以实现递推关系
4.遍历顺序
先遍历背包(n),再遍历物品(每次的台阶数)

实现

点击查看代码
class Solution {
public:
    int climbStairs(int n) {
        vector<int> dp(n+1, 0);
        dp[0] = 1;
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= 2; j++) {
                if(i-j >=0)dp[i] += dp[i - j];
            }
        }
        return dp[n];
    }
};

复杂度分析

  • 时间复杂度:O(n×m),本题中m为2
  • 空间复杂度:O(n)

322. 零钱兑换

题目|文章
image

思路

这道题目求所需最少的硬币个数,既没有要求与顺序有关,也没有要求与顺序无关,因此两种遍历顺序都可以。
1.数组以及下标含义
dp[j]:凑成总金额j所需要的最少的硬币个数
2.递推关系
dp[j] = min(dp[j],dp[j-coins[i]]+1);
3.初始化
当总金额为0时,所需要的硬币个数为0,因此dp[0] = 0;
要求求出最小个数,初始化其他的数为最大int值。
4.遍历顺序
两种遍历都可以。

实现

class Solution {
public:
int coinChange(vector& coins, int amount) {
vector dp(amount + 1, INT32_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]] != INT32_MAX)dp[j] = min(dp[j], dp[j - coins[i]] + 1);
}
}
if (dp[amount] == INT32_MAX) return -1;
return dp[amount];
}
};

复杂度分析

  • 时间复杂度:O(m×n),m为target,n为硬币种类
  • 空间复杂度:O(n)

279. 完全平方数

题目|文章
image

思路

与上一道题思路相同。n为背包重量,小于n的平方数时物品。

实现

点击查看代码
class Solution {
public:
    int numSquares(int n) {
        vector<int> dp(n+1, 10000);
        dp[0] = 0;
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= sqrt(i); j++) {
                dp[i] = min(dp[i], dp[i - j*j] + 1);
            }
            cout<<dp[i]<<endl;
        }
        return dp[n];
        
    }
};

复杂度分析

  • 时间复杂度:O(nlogn),logn为小于n的平方数的数量
  • 空间复杂度:O(n)

标签:遍历,int,复杂度,coins,随想录,322,vector,70,dp
From: https://www.cnblogs.com/suodi/p/16871859.html

相关文章

  • 代码随想录Day20
    LeetCode104.找出二叉树最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示......
  • 703001 TXT 22G101-3图集的简介
    22G101-3图集的全称:混凝土结构施工图平面整体表示方法制图规则和构造详图(独立基础、条形基础、筏形基础、桩基础)本图集制图规则适用于各种现浇混凝土的独立基础、条形......
  • 702001 TXT 22G101-2图集的简介
    22G101-2图集的全称:混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土板式楼梯)本图集制图规则适用于现浇混凝土板式楼梯。......
  • 701001 TXT 22G101-1图集的简介
    22G101-1图集的全称:混凝土结构施工图平面整体表示方法制图规则和构造详图(现浇混凝土框架、剪力墙、梁、板)。本图集制图规则适用于基础顶面以上各种现浇混凝土结构的柱......
  • 代码随想录day44 | 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ
    完全背包文章思路有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物......
  • 代码随想录day43 | 1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
    1049.最后一块石头的重量II题目|文章思路求剩余石头的最小重量。如果两个石头最接近总重量的平均值,那么剩余石头为最小重量。所以先求出石头的总重量的一半。1.数......
  • 700003 TXT 建筑工程施工图的基本知识
    根据正投影原理及建筑工程施工的规定画法,把一房屋的全貌及各个细微局部完全地表达出来,这就是房屋建筑工程施工图。建筑工程施工图是表达设计思想,指导工程施工的重要技术文......
  • 一套用了 70 年的计算机架构 —— 冯·诺依曼架构
    本文已收录到 GitHub·AndroidFamily,有Android进阶知识体系,欢迎Star。技术和职场问题,请关注公众号[彭旭锐]进Android面试交流群。前言大家好,我是小彭。上......
  • AI插件丨170+AI脚本插件合集,全新增强,功能更多
    AdobeIllustrator全新增强脚本插件合集,脚本更全,兼容性更强,更稳定!整合了AI脚本插件数量170+,包含了刀模线绘制、二维码生成、条码制作、角线绘制、置入多页面PDF、自动拼......
  • 代码随想录Day19
    LeetCode101对称二叉树  思路:判断二叉树是否是对称二叉树,我首先想到的是层序遍历,然后取每层的值进行判断是否是回文。但是这种做法是错误的,不能只在意值上面的回文,......