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

海珠区建网站免费推广的方式

海珠区建网站,免费推广的方式,wordpress手机网站模板,佛山容桂疫情最新公布创作不易,感谢三连支持 ! 斐波那契数列用于一维探索的单峰函数之中,用于求解最优值的方法。其主要优势为,在第一次迭代的时候求解两个函数值,之后每次迭代只需求解一次 。 一、第N个泰波那契数 . - 力扣(…

                                                 创作不易,感谢三连支持 !

        斐波那契数列用于一维探索的单峰函数之中,用于求解最优值的方法。其主要优势为,在第一次迭代的时候求解两个函数值,之后每次迭代只需求解一次 。

一、第N个泰波那契数

. - 力扣(LeetCode)第N个泰波那契数

class Solution {
public:int tribonacci(int n) {//边界情况if(n==0||n==1) return n;if(n==2)  return 1;//建表vector<int> dp(n+1);dp[1]=dp[2]=1;//开始填表for(int i=3;i<=n;++i)  dp[i]=dp[i-1]+dp[i-2]+dp[i-3];return dp[n];}
};

时间复杂度O(N),空间复杂度为O(N)

是否还有可以优化的方法呢??那就是该题可以使用滚动数组! 

class Solution {
public:int tribonacci(int n) {//边界情况if(n==0||n==1) return n;if(n==2)  return 1;//滚动数组int a=0,b=1,c=1,d=0;//开始滚动for(int i=3;i<=n;++i)  {d=a+b+c;a=b;b=c;c=d;}return d;}
};

时间复杂度O(N),空间复杂度为O(1) 

二、三步问题

. - 力扣(LeetCode)三步问题

思路1:dp[i]表示从起点到达i位置一共有几种方法

class Solution {
public:int waysToStep(int n) {const int MOD=1e9+7;//边界情况if(n==1||n==2) return n;if(n==3) return 4;//建立dp表vector<int> dp(n+1);//初始化dp[1]=1,dp[2]=2,dp[3]=4;//填表for(int i=4;i<=n;++i)  dp[i]=((dp[i-1]+dp[i-2])%MOD+dp[i-3])%MOD;return dp[n];}
};

思路2:dp[i]表示从i位置到达终点一共有几种方法

class Solution {
public:int waysToStep(int n) {const int MOD=1e9+7;//边界情况if(n==1||n==2) return n;if(n==3) return 4;//建立dp表vector<int> dp(n);//初始化dp[n-1]=1,dp[n-2]=2,dp[n-3]=4;//填表for(int i=n-4;i>=0;--i)  dp[i]=((dp[i+1]+dp[i+2])%MOD+dp[i+3])%MOD;return dp[0];}
};

三、使用最小的花费爬楼梯

. - 力扣(LeetCode)使用最小的花费爬楼梯

方法1:dp[i]表示从起点到i台阶的最小花费

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];}
};

思路2:我们也可以以i为起点,让dp[i]表示到楼顶的最小花费

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n=cost.size();//处理边界情况vector<int> dp(n);dp[n-1]=cost[n-1],dp[n-2]=cost[n-2];for(int i=n-3;i>=0;--i) dp[i]=cost[i]+min(dp[i+1],dp[i+2]);return min(dp[0],dp[1]);}
};

四、解码方法

. - 力扣(LeetCode)解码方法

class Solution {
public:int numDecodings(string s) {int n=s.size();vector<int> dp(n);if(s[0]!='0') ++dp[0];//处理边界情况if(n==1)  return dp[0];if(s[1]!='0'&&s[0]!='0') dp[1]++;int t=(s[0]-'0')*10+(s[1]-'0');if(10<=t&&t<=26) ++dp[1];//开始填表for(int i=2;i<n;++i) {if(s[i]!='0') dp[i]+=dp[i-1];int t=(s[i-1]-'0')*10+(s[i]-'0');if(10<=t&&t<=26) dp[i]+=dp[i-2];}return dp[n-1];}
};

       我们会发现dp[1]的初始化和填表里面的过程非常相似,所以我们可以用一个动态规划的小技巧——虚拟节点(专门用来处理边界问题)

class Solution {
public:int numDecodings(string s) {int n=s.size();vector<int> dp(n+1);dp[0]=1;if(s[0]!='0') ++dp[1];//开始填表for(int i=2;i<=n;++i) {if(s[i-1]!='0') dp[i]+=dp[i-1];int t=(s[i-2]-'0')*10+(s[i-1]-'0');if(10<=t&&t<=26) dp[i]+=dp[i-2];}return dp[n];}
};

 先暂时更新到这,后面有新的题目会持续更新

http://www.hkea.cn/news/897461/

相关文章:

  • 铜陵公司做网站中国网站排名100
  • 我要建一个网站泰州百度公司代理商
  • php响应式网站模板vi设计公司
  • 随身wifi网站设置广告投放是做什么的
  • 中企动力做网站的优势网络销售平台有哪些软件
  • 网站建设的费用如何查看百度搜索指数
  • 自己做网站需要什么seo的基本步骤
  • 视频直播app开发网站南京最新消息今天
  • 溧阳手机网站哪里做万网域名注册官网查询
  • 网站维护收费推广产品吸引人的句子
  • 怎么用一个主机做多个网站许昌网络推广公司
  • 网站域名所有权郑州网站运营专业乐云seo
  • 桂园精品网站建设费用网站seo查询站长之家
  • 安卓手机怎么做网站站长工具seo综合查询广告
  • 余姚网站建设的公司手机百度账号申请注册
  • 预付网站制作费怎么做凭证如何自制网站
  • 定制网站多少钱北京seo网站管理
  • 南昌做网站公司哪家好如何建立独立网站
  • 成都解放号网站建设什么是百度竞价
  • 网站优化的基本思想与原则百度号码
  • 沧州网站建设制作设计优化深圳seo优化推广
  • 建立一个网站需要什么技术网上培训机构
  • 网站设计与管理论文百度账号注册平台
  • 网站空间商推荐seo是什么职位缩写
  • 怎么建设boss网站文件外链
  • 百度推广网站建设费百度搜索引擎的网址是多少
  • php 手机网站 上传图片定制网站建设
  • 关于网站建设的问题百度关键词分析
  • 登录官方网站装修公司网络推广方案
  • 设计网站官网入口网站搜索优化方法