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

wordpress列表图显示标题新站点seo联系方式

wordpress列表图显示标题,新站点seo联系方式,垃圾ip段做网站,董事长办公室装修设计效果图爬楼梯问题:动态规划与斐波那契的巧妙结合 问题描述 假设你正在爬楼梯,需要爬 n 阶才能到达楼顶。每次你可以爬 1 或 2 个台阶。求有多少种不同的方法可以爬到楼顶? 示例: n 2 → 输出 2(1阶1阶 或 2阶&#xff0…

爬楼梯问题:动态规划与斐波那契的巧妙结合

问题描述

假设你正在爬楼梯,需要爬 n 阶才能到达楼顶。每次你可以爬 12 个台阶。求有多少种不同的方法可以爬到楼顶?

示例

  • n = 2 → 输出 21阶+1阶2阶
  • n = 3 → 输出 31阶+1阶+1阶1阶+2阶2阶+1阶

约束1 ≤ n ≤ 45


解题思路

爬楼梯问题本质是斐波那契数列的变种。关键洞察:

  • 到达第 n 阶的最后一步有两种选择:
    • 从第 n-1 阶爬 1
    • 从第 n-2 阶爬 2
  • 因此,状态转移方程为:
    dp[n] = dp[n-1] + dp[n-2]
边界条件
  • dp[0] = 1(没有台阶时视为一种方法)
  • dp[1] = 1(爬 1 阶只有一种方法)

解法分析

1. 记忆化搜索(自顶向下)

通过递归+缓存避免重复计算,时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)(递归栈深度+缓存数组)。

class Solution {int[] arr = new int[46]; // 缓存数组(n最大为45)public int climbStairs(int n) {return f(n);}private int f(int n) {if (arr[n] != 0) return arr[n]; // 命中缓存if (n == 0 || n == 1) return 1; // 边界条件arr[n] = f(n-1) + f(n-2); // 递归计算并缓存return arr[n];}
}

优势

  • 直接模拟问题描述,逻辑清晰
  • 避免重复计算,效率较纯递归大幅提升

局限

  • 递归调用栈可能溢出(尽管本题 n≤45 安全)

2. 动态规划(自底向上)

迭代计算,消除递归开销。时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)

class Solution {public int climbStairs(int n) {if (n <= 1) return 1;int[] dp = new int[n+1];dp[0] = 1;dp[1] = 1;for (int i = 2; i <= n; i++) {dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
}

3. 空间优化动态规划(最优解)

仅需保存前两个状态,空间复杂度优化至 O ( 1 ) O(1) O(1)

class Solution {public int climbStairs(int n) {if (n <= 1) return 1;int a = 1, b = 1;for (int i = 2; i <= n; i++) {int c = a + b;a = b;b = c;}return b;}
}

优势

  • 空间效率最高(常数空间)
  • 运行速度最快(无递归和数组操作开销)

数学视角:斐波那契数列

爬楼梯问题等价于斐波那契数列:

台阶数 n012345
方法数112358

可直接套用斐波那契通项公式(但浮点运算可能有精度问题):

public int climbStairs(int n) {double sqrt5 = Math.sqrt(5);return (int) ((Math.pow((1+sqrt5)/2, n+1) - Math.pow((1-sqrt5)/2, n+1)) / sqrt5);
}

注意:通项公式在 n>45 时可能因浮点精度失效,迭代解法更可靠。


总结与对比

方法时间复杂度空间复杂度适用场景
记忆化搜索 O ( n ) O(n) O(n) O ( n ) O(n) O(n)递归思路清晰
动态规划 O ( n ) O(n) O(n) O ( n ) O(n) O(n)无栈溢出风险
优化动态规划 O ( n ) O(n) O(n) O ( 1 ) O(1) O(1)最优解,推荐使用
通项公式 O ( 1 ) O(1) O(1) O ( 1 ) O(1) O(1)理论价值高,精度受限

关键点

  1. 状态定义dp[n] 表示到达第 n 阶的方案数
  2. 转移方程dp[n] = dp[n-1] + dp[n-2]
  3. 边界处理dp[0]=1, dp[1]=1

面试技巧:先给出递归思路,再逐步优化到动态规划,最后给出空间优化版本,展示算法优化能力!

http://www.dtcms.com/wzjs/123166.html

相关文章:

  • 个人博客网站开发的意义网络营销推广案例
  • 西安免费建网站制作品牌营销策划案例ppt
  • 怎么自己做网站吓别人南宁seo计费管理
  • 院校门户网站建设方案站长工具seo诊断
  • 专业做网站建设公司网络营销方案策划
  • 成华区微信网站建设推网站快照优化公司
  • 品牌网站建设方案成都网站建设
  • 招聘网站建设人员软文台
  • 南昌网站建设资讯百度直播间
  • 免费网站建站工具泾县网站seo优化排名
  • 网站 备案 名称如何推广品牌
  • 如何做网站不被查站长工具seo综合查询访问
  • wordpress英文版 菜单整站seo优化公司
  • 中华人民共和国城乡与建设部网站关键词排名监控
  • 做棋牌网站建设千锋教育培训多少钱
  • 网站开发的国内外研究现状磁力猫最好磁力搜索引擎
  • 网站维护常见问题怎么创建网站?
  • 发任务做任务得网站网站工具查询
  • 网站建设前台后台七日通 下载如何引流推广产品
  • 大连网站建设外包公司企业网站推广方法
  • html网站怎么做视频教程成人用品哪里进货好
  • iis做的网站提示5002021年新闻摘抄
  • 南昌网站排名优化报价谷歌浏览器下载视频
  • 网店运营推广高级实训教程汕头seo
  • 便宜做网站的公司靠谱吗百度刷排名优化软件
  • 沈阳网站建设哪家做得好seo顾问服务 乐云践新专家
  • 做抽奖网站合法吗免费b2b网站有哪些
  • 网站建设要花钱吗友链之家
  • 简单网站建设公司windows优化大师如何卸载
  • 新东方研学网站那家公司做的推广网站有效的免费方法