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

网页设计素材加工百度推广优化公司

网页设计素材加工,百度推广优化公司,广西疫情最新情况分布图,深圳制作广告宣传片制作目录 70:爬楼梯 题目要求: 解题思路:(类似斐波那契数) 递归解法: 非递归解法: 126:斐波那契数 题目要求: 解题思路: 递归解法: 非递归解…

目录

70:爬楼梯

题目要求:

解题思路:(类似斐波那契数)

递归解法:

非递归解法:

126:斐波那契数

题目要求:

解题思路:

递归解法:

非递归解法:

都看到这了,点个赞再走呗,谢谢谢谢谢!!!


70:爬楼梯

题目要求:

解题思路:(类似斐波那契数)

递归解法:

由题可知,每次可以爬1个或者2个台阶,假如有n个台阶,会有多少种走法?那么我们就想,第一次爬一个台阶,那方法数就是爬这一次台阶加上剩下n-1个台阶的走法,爬两个台阶,那方法数就是爬完这两个台阶再加上剩下n-2个台阶的走法,很容易就想到递归的解法了,而使用递归我们要找到终止条件,也要写出递归公式

但是这么递归的时间复杂度很高,LeetCode上通过不了,会有很多重复计算的斐波那契数,我们可以用HashMap来解题,每次往下找之前都记录一下map里面有没有n这个斐波那契数,有就不用继续往下找了,直接返回这个斐波那契数,没有就继续往下找,有了HashMap的引用,我们时间复杂度就变成了O(N),在LeetCode上也就能通过了。

递归公式如下:

代码如下:

class Solution {HashMap<Integer, Integer> hashmap = new HashMap<>();public int climbStairs(int n) {if(n == 1) {return 1;}if(n == 2) {return 2;}//每次递归都判断map有没有n个台阶爬楼梯方法数,没有算出当前n阶台阶的方法数,放进map里,放进map里后就不用继续往下递归了,直接返回这个方法数,因为hashmap已经存了n阶台阶的方法数了;有就不用继续递归了,直接返回n台阶的方法数if(hashmap.get(n) != null) {return hashmap.get(n);} else {int result = climbStairs(n - 1) + climbStairs(n - 2);hashmap.put(n, result);return result;}}
}

非递归解法:

从此图我们可以看出,要求n的斐波那契数,必须求前一个和前两个的斐波那契数,也就是上图的公式,非递归的解法,我们就用循环来解决,从下至上来求n的斐波那契数,我们定义一个pre和prePre变量来记录前一个和前两个的斐波那契数,result来记录n的斐波那契数每循环一次都要更改pre和prePre的下标,时间复杂度为O(N).

代码如下:

 public int climbStairs(int n) {//非递归思想if(n == 1) {return 1;}if(n == 2) {return 2;}int result = 0;int pre = 2;int prePre = 1;for(int flg = 3; flg <= n; flg++) {result = pre + prePre;//pre和prePre都要往前推prePre = pre;pre = result;}return result;}

126:斐波那契数

题目要求:

解题思路:

        这题和爬楼梯思路一样,解法也一样,递归和非递归也一样,不过他的递归公式和结束条件和爬楼梯不一样,公式如下图:

递归思路:因为递归会重复计算很多次,所以我们可以用一个HashMap来记录n的斐波那契数每递归一次都判断map里面有没有n的斐波那契数,有就不用继续往下递归了,直接返回这个斐波那契数没有就往下递归,把1后面的斐波那契数列都记录在map中,这样时间复杂度就是O(N)了,LeetCode也能通过。

非递归思路:用循环,从下至上,求得每个斐波那契数我们定义result放n的斐波那契数,pre放n的前一个斐波那契数,prePre放n的前两个斐波那契数每循环一次都要更新一次pre和prePre的下标,往上走。

递归解法:

代码如下:

 Map<Integer, Integer> map = new HashMap<>();public int fib(int n) {if(n == 0 || n == 1) {return n;}if(map.containsKey(n)) {return map.get(n);}//n的斐波那契数不在map里int result = (fib(n - 1) + fib(n - 2)) % 1000000007;//int result = (fib(n - 1) + fib(n - 2));map.put(n, result);return result;}

非递归解法:

 public int fib(int n) {//非递归if(n == 0 || n == 1) {return n;}int result = 0;int pre = 1;int prePre = 0;for(int i = 2; i <= n; i++) {result = (pre + prePre) % 1000000007;prePre = pre;pre = result;}return result;}

都看到这了,点个赞再走呗,谢谢谢谢谢!!!

http://www.tj-hxxt.cn/news/99023.html

相关文章:

  • 邯郸如何做企业网站下载百度极速版
  • 做视频免费模板下载网站steam交易链接怎么改
  • 商城是什么平台网站关键词排名优化工具
  • 网站后台模板 免费百度有几个总部
  • 怎么做bbs网站娄底地seo
  • 乐都企业网站建设公司宁波百度快照优化排名
  • 做销售用的免费发布信息网站帮我搜一下长沙做网络销售
  • 福州商城网站开发公司seo 怎么做到百度首页
  • wordpress可视化界面湖南网站seo营销
  • 如何做高大上的网站 知乎苏州seo网站管理
  • 怎么做自己的网站赚钱营销网站建设培训学校
  • 一键查询注册过的网站中国搜索引擎排名
  • 静态网站设计方案长春网站优化方案
  • 有没有可以做app的网站网站seo推广优化教程
  • 做网站的语言叫什么360提交入口网址
  • 北京建设局网站怎么设计一个网页
  • 中文域名 怎么做网站google排名
  • 深圳安鸿源建设网站手机网站百度关键词排名
  • 网站建设的难点网站推广联盟
  • 青海市住房和城乡建设厅网站网站页面优化方法
  • 商城图片seo如何优化
  • 做网站的公司百度搜索引擎营销如何实现
  • 网站设计h5世界最新新闻
  • 亚马逊雨林火灾武汉seo首页优化公司
  • 用手机域名做网站有多少公司网站建设要多少钱
  • 石家庄网站建设浩森宇特关键词排名零芯互联关键词
  • 做下载类网站赚钱吗品牌广告图片
  • 广州网站建设工作室哪个平台推广效果最好
  • 家用电脑做网站后台快速网站搭建
  • 网站开发定制模板网站建设网络营销策划书结构