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

万江做网站收录网站查询

万江做网站,收录网站查询,ui设计师需要学什么专业,本溪 网站建设 做网站509. 斐波那契数 题目链接:509. 斐波那契数 文档讲解:代码随想录/斐波那契数 视频讲解:视频讲解-斐波那契数 状态:已完成(1遍) 解题过程 看到题目的第一想法 虽然看了卡哥的动态规划五部曲,…

509. 斐波那契数

题目链接:509. 斐波那契数

文档讲解:代码随想录/斐波那契数

视频讲解:视频讲解-斐波那契数

状态:已完成(1遍)

解题过程 

看到题目的第一想法

虽然看了卡哥的动态规划五部曲,但是看到题目之后还是不太会操作索性不要有自己多余的思考了,直接看视频讲解。

看完代码随想录之后的想法 

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:第i个数的斐波那契数值是dp[i]
  2. 确定递推公式dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化:dp[0] = 0 、dp[1] = 1;
  4. 确定遍历顺序:从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,当N为10的时候,dp数组应该是如下的数列:0 1 1 2 3 5 8 13 21 34 55。

看了讲解手搓代码如下:

/*** @param {number} n* @return {number}*/
var fib = function(n) {let dp = [];dp[0] = 0,dp[1] = 1;for(let i = 2;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];
};

总结

这道题作为动态规划之所以简单,是因为递推公式、初始化、遍历顺序都已经由题目确定。


 70. 爬楼梯 

题目链接:70. 爬楼梯

文档讲解:代码随想录/爬楼梯 

视频讲解:视频讲解-爬楼梯 

状态:已完成(1遍)

解题过程  

看到题目的第一想法

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:到第i层阶梯有dp[i]种方式能够来到;
  2. 确定递推公式dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化:dp[0] = 1 、dp[1] = 1、dp[2] = 2;
  4. 确定遍历顺序:从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,dp数组应该是如下的数列: 1 1 2 3 5  8 13 21 34 55。

手搓代码如下:

/*** @param {number} n* @return {number}*/
var climbStairs = function(n) {let dp = [1,1];for(let i =2;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];
};

提交成功!

 看完代码随想录之后的想法 

严格遵守对dp[i]的描述,直接没有i=0的时候。

讲解代码如下:

/*** @param {number} n* @return {number}*/
var climbStairs = function(n) {// dp[i] 为第 i 阶楼梯有多少种方法爬到楼顶// dp[i] = dp[i - 1] + dp[i - 2]let dp = [1 , 2]for(let i = 2; i < n; i++) {dp[i] = dp[i - 1] + dp[i - 2]}return dp[n - 1]
};

总结

一开始我就往动态规划的思路上靠,感觉既然只有两种行走方式,那到dp[i]级阶梯的方式肯定就是他的下一级dp[i-1]和下两级dp[i-2],所以到这级阶梯的方式就是到下两级阶梯方式的和。


746. 使用最小花费爬楼梯

题目链接:746. 使用最小花费爬楼梯

文档讲解:代码随想录/使用最小花费爬楼梯

视频讲解:视频讲解-使用最小花费爬楼梯

状态:已完成(1遍)

解题过程  

看到题目的第一想法

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:从第i层阶梯出发的最小花费dp[i]元;
  2. 确定递推公式dp[i] = dp[i - 1] 和 dp[i - 2] 的最小值 + cost[i];
  3. dp数组如何初始化:dp[0] = cost[0] 、dp[1] =cost[1] ;
  4. 确定遍历顺序:从递归公式中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式我们来推导一下,dp数组应该是如下的数列: 10 15 30  。

手搓代码如下:

/*** @param {number[]} cost* @return {number}*/
var minCostClimbingStairs = function(cost) {let dp = [cost[0],cost[1]];for(let i =2;i<cost.length;i++){dp[i] = Math.min(dp[i - 1],dp[i - 2]) + cost[i];}return Math.min(dp[cost.length-1],dp[cost.length-2]);
};

提交成功,没有问题。 我在求最后一级阶梯的时候就不用走for循环里了,直接比较从前两节阶梯哪个出发更便宜。

 看完代码随想录之后的想法 

卡尔哥用dp[i]表示到达第i节阶梯的最便宜花费,确实省事一点。

讲解代码如下:

/*** @param {number[]} cost* @return {number}*/
var minCostClimbingStairs = function(cost) {const dp = [0, 0]for (let i = 2; i <= cost.length; ++i) {dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])}return dp[cost.length]
};

总结

今天的三道题还算简单,希望明后天可以撑住。

http://www.ds6.com.cn/news/70910.html

相关文章:

  • 做公益的网站有哪些广东广州网点快速网站建设
  • 蓝色系 网站网站建设网络营销
  • 网站建设书本信息中国seo高手排行榜
  • 日本做a网站职业教育培训机构排名前十
  • 查询网站备案号app陕西网站建设制作
  • 浙0577 icp网站建设微信加精准客源软件
  • 企业网站设计费做哪个科目麒麟seo软件
  • 建设论坛网站自学百度推广一年要多少钱
  • 七宝做网站公司北京seo优化推广
  • 做短视频网站收益今日重大财经新闻
  • 网站建设人力资源人员配置关键词分为哪几类
  • 软件培训机构哪家好廊坊seo培训
  • 33岁改行做网站建设大连seo网站推广
  • 上海购物网站建设临汾网络推广
  • 广州模板网站建设公司网站搭建
  • 重庆有名的网站建设谷歌浏览器官网
  • 做网站步骤建网站模板
  • 网站页脚怎么做美观百度搜索推广怎么做
  • 秦皇岛汽车网站制作百度大数据分析工具
  • 小手工制作简单又漂亮优化品牌seo关键词
  • 延庆建设委员会官方网站邯郸网站seo
  • 网站建设公司推荐金石下拉g优化服务是什么意思
  • 只做衬衣网站磁力宝
  • 什么网站做班服比较好百度推广联盟
  • 做网站买域名就行了吗5118网站查询
  • win2008 iis网站发布长沙网站定制
  • 短视频网站平台怎么做全国十大跨境电商公司排名
  • 网站设计与管理论文seo排名资源
  • 销售手机网站的后期安排韩国搜索引擎排名
  • 秀色直播app软件大全手机系统优化软件哪个好