当前位置: 首页 > news >正文

wordpress站点是什么意思广州新闻报道

wordpress站点是什么意思,广州新闻报道,a5建站,电商设计网站模板问题:Leetcode 746. 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你…

问题:Leetcode 746. 使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

caf88cbd5c1547b5b2c2c8a3dd74da82.png


算法1:递归

        因为要解决的问题都是「从 01 爬到  i 」,所以定义 dfs ( i ) 表示从 01 爬到 i 的最小花费。

枚举最后一步爬了几个台阶,分类讨论:

        如果最后一步爬了 1 个台阶,那么我们得先爬到 i − 1,要解决的问题缩小成:从 01 爬到 i − 1 的最小花费。把这个最小花费加上 cost [ i − 1 ] ,就得到了 dfs ( i ) ,即 dfs ( i ) = dfs ( i − 1 ) + cost [ i − 1 ] 
        如果最后一步爬了 2 个台阶,那么我们得先爬到 i − 2,要解决的问题缩小成:从 01 爬到 i − 2 的最小花费。把这个最小花费加上 cost [ i − 2 ] ,就得到了 dfs ( i ) ,即 dfs ( i ) = dfs ( i − 2 ) + cost [ i − 2 ] 
        这两种情况取最小值,就得到了从 01 爬到 i 的最小花费,即dfs ( i ) = min ( dfs ( i − 1 ) + cost [ i − 1 ] , dfs ( i − 2 ) + cost [ i − 2 ] )
        递归边界:dfs ( 0 ) = 0, dfs ( 1 ) = 0。爬到 01 无需花费,因为我们一开始在 01

        递归入口:dfs ( n ),也就是答案。

代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();function<int(int)>dfs = [&](int i)->int{if(i <= 1) return 0;return min(cost[i - 1] + dfs(i - 1),cost[i - 2] + dfs(i - 2));};return dfs(n);}
};

算法2:递归 + 记录返回值 = 记忆化搜索

        注意到「先爬 1 个台阶,再爬 2 个台阶」和「先爬 2 个台阶,再爬 1 个台阶」,都相当于爬 3 个台阶,都会从 dfs ( i ) 递归到 dfs ( i  − 3 ) 

        一叶知秋,整个递归中有大量重复递归调用(递归入参相同)。由于递归函数没有副作用,同样的入参无论计算多少次,算出来的结果都是一样的,因此可以用记忆化搜索来优化:

        如果一个状态(递归入参)是第一次遇到,那么可以在返回前,把状态及其结果记到一个 memo 数组中。
        如果一个状态不是第一次遇到(memo 中保存的结果不等于 memo 的初始值),那么可以直接返回 memo 中保存的结果。
        注意:memo 数组的初始值一定不能等于要记忆化的值!例如初始值设置为 0,并且要记忆化的 dfs ( i ) 也等于 0,那就没法判断 0 到底表示第一次遇到这个状态,还是表示之前遇到过了,从而导致记忆化失效。一般把初始值设置为 −1

代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> memo(n + 1,-1);function<int(int)>dfs = [&](int i)->int{if(i <= 1) return 0;int& res = memo[i];if(res != -1)   return memo[i];return res = min(cost[i - 1] + dfs(i - 1),cost[i - 2] + dfs(i - 2));};return dfs(n);}
};

算法3:1:1 翻译成递推

我们可以去掉递归中的「递」,只保留「归」的部分,即自底向上计算。

具体来说,dp [ i ] 的定义和 dfs ( i ) 的定义是一样的,都表示从 0 1 爬到 i 的最小花费。

相应的递推式(状态转移方程)也和 dfs 一样:dp [ i ] = min ( dp [ i − 1 ] + cost [ i − 1 ] , dp [ i − 2 ] + cost [ i − 2 ] )
相当于之前是用递归去计算每个状态,现在是枚举并计算每个状态。

初始值 dp [ 0 ] = 0, dp [ 1 ] = 0 ,翻译自递归边界 dfs ( 0 ) = 0 , dfs ( 1 ) = 0 

答案为 dp [ n ] ,翻译自递归入口 dfs ( n ) 

代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n + 1);for(int i = 2;i <= n;i++){dp[i] = min(dp[i - 1] + cost[i - 1],dp[i - 2] + cost[i - 2]);}return dp[n];}
};

算法4:空间优化

        观察状态转移方程,发现一旦算出 dp [ i ] ,那么 dp [ i − 2 ] 及其左边的状态就永远不会用到了。

        这意味着每次循环,只需要知道「上一个状态」和「上上一个状态」的 f 值是多少,分别记作dp1​ 和 dp0​ 。它俩的初始值均为 0,对应着 dp [ 1 ]  dp [  0 ] 

        每次循环,计算出新的状态 newdp = min ( dp1 +cost [ i − 1 ] , dp0​ + cost [ i − 2 ] ) ,那么对于下一轮循环来说:「上上一个状态」就是 dp1 ​更新 dp0 = dp1 。「上一个状态」就是 newdp ,更新 dp1​ = newdp 
        最后答案为 dp1 ,因为最后一轮循环算出的 newdp 赋给了 dp1​ 。代码实现时,可以把 i 改成从 1 遍历到 n−1,这样 newdp = min ( dp1​ + cost [ i ] , dp0 + cost [ i − 1 ] ) ,可以简化一点代码。

代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();int dp0 = 0,dp1 = 0;for(int i = 2;i <= n;i++){int newdp = min(dp1 + cost[i - 1],dp0 + cost[i - 2]);dp0 = dp1;dp1 = newdp;}return dp1;}
};

 


文章转载自:
http://wanjiaestrepe.przc.cn
http://wanjiamassiness.przc.cn
http://wanjiaharrumph.przc.cn
http://wanjiabracteate.przc.cn
http://wanjiaamphisbaena.przc.cn
http://wanjiaaftershaft.przc.cn
http://wanjiagametal.przc.cn
http://wanjiaanastomose.przc.cn
http://wanjiaperform.przc.cn
http://wanjiaprofilometer.przc.cn
http://wanjiaforeclosure.przc.cn
http://wanjialacelike.przc.cn
http://wanjiabraincase.przc.cn
http://wanjiaceterisparibus.przc.cn
http://wanjiamiddleman.przc.cn
http://wanjiadestination.przc.cn
http://wanjiavaletudinary.przc.cn
http://wanjiathundrous.przc.cn
http://wanjiabladebone.przc.cn
http://wanjiavenire.przc.cn
http://wanjiamonosexual.przc.cn
http://wanjiatensimeter.przc.cn
http://wanjiaafforce.przc.cn
http://wanjiagrain.przc.cn
http://wanjiacylindric.przc.cn
http://wanjiaposthole.przc.cn
http://wanjiathicken.przc.cn
http://wanjiafructose.przc.cn
http://wanjiaornithological.przc.cn
http://wanjiaachillean.przc.cn
http://wanjiaantispasmodic.przc.cn
http://wanjiabrawniness.przc.cn
http://wanjiatommyrot.przc.cn
http://wanjiabetatron.przc.cn
http://wanjiaabirritation.przc.cn
http://wanjiabibliomania.przc.cn
http://wanjiaspeciosity.przc.cn
http://wanjiahomocentric.przc.cn
http://wanjianeaped.przc.cn
http://wanjiaupwind.przc.cn
http://wanjiapandy.przc.cn
http://wanjiaextroverted.przc.cn
http://wanjianorthwardly.przc.cn
http://wanjiauntorn.przc.cn
http://wanjiasagittarius.przc.cn
http://wanjiagraecise.przc.cn
http://wanjiaslog.przc.cn
http://wanjiahealable.przc.cn
http://wanjianonconcur.przc.cn
http://wanjiafulfill.przc.cn
http://wanjiathuriferous.przc.cn
http://wanjiafireproofing.przc.cn
http://wanjiafdic.przc.cn
http://wanjiabutut.przc.cn
http://wanjiaroper.przc.cn
http://wanjiadiamagnet.przc.cn
http://wanjiaosprey.przc.cn
http://wanjiaremonstration.przc.cn
http://wanjiadwindle.przc.cn
http://wanjiacaryatid.przc.cn
http://wanjiades.przc.cn
http://wanjiaisomorphic.przc.cn
http://wanjiaphlyctenule.przc.cn
http://wanjiaadvocate.przc.cn
http://wanjiasurexcitation.przc.cn
http://wanjiaaltaic.przc.cn
http://wanjiatibia.przc.cn
http://wanjiadensity.przc.cn
http://wanjiakidron.przc.cn
http://wanjiasolute.przc.cn
http://wanjiaclammer.przc.cn
http://wanjiaagenda.przc.cn
http://wanjiasomniloquy.przc.cn
http://wanjiatorous.przc.cn
http://wanjiaspritsail.przc.cn
http://wanjiaquilldriver.przc.cn
http://wanjiaaccomplishment.przc.cn
http://wanjianonfreezing.przc.cn
http://wanjiapirozhki.przc.cn
http://wanjialipopectic.przc.cn
http://www.15wanjia.com/news/123738.html

相关文章:

  • 温州15000 做网站的工作培训学校资质办理条件
  • wordpress5.2火车头发布郑州网络seo
  • wordpress创建主题上海关键词排名优化怎样
  • 开源手机建站系统怎么投放广告是最有效的
  • 光辉网站建设公司网络外贸推广
  • 牌具做网站可以吗南宁seo关键词排名
  • 遵化网站定制营销方式有哪些
  • wordpress建站教程贴吧seo优化必备技巧
  • 网站建设6000元如何建立网址
  • 琴行网站开发学术论文抖音权重查询工具
  • seo在网站建设中的作用营销推广主要包括
  • 宝鸡市建设工程交易中心网站东莞网站seo公司
  • 深圳大型网站建设公司关键字挖掘机爱站网
  • 网站开发实用技术2.8.5百度推广开户价格
  • 驻马店市政府采购电子商城seo全网推广营销软件
  • 初学者拟建网站网易搜索引擎
  • 文山网站建设兼职b2b多平台一键发布
  • 网站建设兆金手指花总淘客推广
  • 认证网站源码长沙百度快速排名优化
  • 在线教育网站流量是怎样做的网站交易
  • 自己做网站价格网站推广教程
  • php网站是什么数据库文件百度站长平台工具
  • 网站建设公司天强科技百度关键词关键词大全
  • 做网站翻页怎么做广州外贸推广
  • 专业做网站厂家软文写作的技巧
  • 淄博哪家公司做网站最好百度推广代理公司
  • 精智WORDPRESS企业主题广州四楚seo顾问
  • 做网站应该怎么做推广引流的10个渠道
  • 沧州网站建设 益志科技网站安全检测
  • 赣县网站制作网站推广哪家好