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

leetcode 506 斐波那契数

一、问题描述

二、解题思路

(1)解法一:直接递归

按照题目意思,直接暴力递归,这种方法重复计算太多。

(2)解法二:记忆化搜索

由于解法一重复计算太多,比如在计算fib(5)的时候需要计算fib(3)和fib(4),在计算fib(4)的时候也要计算fib(3),重复计算过多。

我们可以用一个数组,将前面计算过的结果存储起来,如果需要的结果是前面计算过的,就直接使用即可。

(3)解法三:动态规划

由于fib(n)=fib(n-2)+fib(n-1),所以,可以开辟一个数组dp来存放相应的斐波那契数值,dp[i]的值为fib(i)的值。

(4)解法四:滚动数组

由于fib(n)只与fib(n-1)与fib(n-2)有关,所以只需要保存前面的两个数即可。

三、代码实现

解法一:直接递归

class Solution {
public:int fib(int n) {if(n==0) return 0;if(n==1) return 1;return fib(n-1)+fib(n-2);}
};

解法二:记忆化搜索

class Solution {vector<int> memo;
public:int fib(int n) {//边界处理if(n==0) return 0;if(n==1) return 1;memo.resize(n+1,-1);memo[0]=0;memo[1]=1;return dfs(n);}int dfs(int n){//如果memo中有,直接返回if(memo[n]!=-1) return memo[n];//如果memo中没有,则存入memoelse{memo[n]=dfs(n-2)+dfs(n-1);return memo[n];}}
};

解法三:动态规划

class Solution {
public:int fib(int n) {//边界处理if(n==0) return 0;if(n==1) return 1;//填写dp数组vector<int> dp(n+1,0);dp[0]=0;dp[1]=1;for(int i=2;i<=n;i++) dp[i]=dp[i-1]+dp[i-2];return dp[n];}
};

解法四:滚动数组

class Solution {
public:int fib(int n) {//边界处理if(n==0) return 0;if(n==1) return 1;int a,b,c;a=0;b=1;for(int i=2;i<=n;i++) {c=a+b;a=b;b=c;}return c;}
};
http://www.dtcms.com/a/466080.html

相关文章:

  • Linux 命令:mount
  • JavaWeb——Servlet生命周期
  • JavaWeb——(web.xml)中的(url-pattern)
  • 企业网站建设合作协议范文天津城市建设大学网站
  • 新专业加速落地!设备采购先行,工业视觉人才培养破局。
  • FastAPI 入门:从环境搭建到实战开发的完整指南
  • Redis的String详解
  • MySQL事务隔离级别详解从读未提交到可串行化
  • 网站域名注册空间app外包
  • 赣州网站推广公司微网站建设是什么
  • 图扑 HT 架构下 AR 应用开发与行业解决方案实现
  • 测试实战心得
  • 网页网站设计价格为什么我做的视频网站播放不了
  • 前端框架深度解析:Vue.js 3 从 Composition API 到生态升级,解锁企业级开发新能力
  • DataX适合全量同步和简单的增量场景
  • 实体门店怎么使用小程序?实体店如何做小程序店铺?
  • 服装公司网站建设方案渭南做网站博创互联
  • 基于GPS/PTP/gPTP的自动驾驶数据同步授时方案
  • 福田网站建设龙岗网站建设龙岗网站建设龙岗网站建设中关村手机之家官网
  • solr负查询失效
  • GSPO如何消除高方差且不依赖routing replay
  • 南宁电子推广网站河南网站建设技术公司
  • 泰安房产网站建设设计网页公司哪家好
  • R语言基础保姆教程01--从工具到数据类型
  • MySQL索引失效揭秘:隐式类型转换的规则与案例!
  • Mysql杂志(三十)——索引失效情况
  • 百度企业网站建设wordpress 数据库设计
  • 10.程序地址空间_1
  • 6.0 Labview中的类面向对象编程-类的使用(OOP)
  • 上海精品网站建设想设计一个公司的网站