9.13 | day 6 |day 45| to 完全平方数

● 70. 爬楼梯 (进阶)

复制代码
class Solution {
    public int climbStairs(int n) {
    int[] dp = new int[n+1];//设置背包容量:n个
    int m =2;//有两个物品,注意这是一个完全背包问题
    dp[0] = 1;//initialize
​
    for(int i = 1;i<=n;i++){//遍历背包
        for(int j = 1;j<=m;j++){//遍历物品
           if(i >=  j) dp[i] += dp[i-j];
           //走了 j 步,就还剩下i-j
           //而dp[i]是指到达i层的总方法数
        }
    }
    return dp[n];
    }
}

● 322. 零钱兑换

复制代码
class Solution {
    public int coinChange(int[] coins, int amount) {
  // 注意题目中说的是最少硬币书,与排列和组合都没有关系,所以for循环顺序随便,因为我们始终要遍历物品和背包
  int max = Integer.MAX_VALUE;
  int[] dp = new int[amount+1];
  dp[0] = 0;
  for(int i  =1;i<=amount;i++){
      dp[i] = max;
  }
 
for(int i = 0;i<coins.length;i++){
    for(int j = coins[i];j<=amount;j++){//还是对每个硬币进行遍历,只是根据硬币来看的
        //肯定是j-coins[i],不是j本身哈,这样保证了从0开始
        if(dp[j - coins[i]]!=max){
            dp[j] = Math.min(dp[j],dp[j-coins[i]]+1);
        }
    }
}
return dp[amount]==max?-1:dp[amount];
  }
    }
​

● 279.完全平方数

复制代码
class Solution {
    public int numSquares(int n) {
     int[] dp = new int[n+1];//背包容量
     int max = Integer.MAX_VALUE;
     for(int i =1;i<=n;i++){
         dp[i] = max;
     }
     for(int i = 1;i*i<=n;i++){//遍历每个物品
         for(int j = i*i;j<=n;j++){//遍历背包
             if(dp[j-i*i]!=max){
                 dp[j] = Math.min(dp[j],dp[j-i*i]+1);
             }
         }
     }
     return dp[n];
    }
}
相关推荐
ValhallaCoder5 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
董董灿是个攻城狮5 小时前
AI 视觉连载1:像素
算法
智驱力人工智能5 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
孞㐑¥6 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风6 小时前
代码随想录第十五天
数据结构·算法·leetcode
XX風6 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT066 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠7 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂7 小时前
代码随想录day37动态规划part05
算法
sali-tec7 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉