Leetcode的解法五,下楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

这是一个有趣的做法,fibonacci数列计算转换为矩阵[1,1][1,0]的n次幂~

https://leetcode-cn.com/explore/featured/card/recursion-i/258/memorization/1214/

public class solution{public static int climbStairs(int n) {int[][] q = {{1,1},{1,0}};int[][] res = pow(q,n);return res[0][0];}public static int[][] pow(int[][] a, int n){//快速幂乘算法int[][] ret = {{1,0},{0,1}};while(n > 0){if((n&1)==1){ret = multiply(ret,a);}n >>= 1;a = multiply(a,a);}return ret;}public static int[][] multiply(int[][] a,int[][] b){//矩阵乘法int[][] c = new int[2][2];for(int i = 0;i < 2;i++){for(int j = 0;j < 2;j++){c[i][j] = a[i][0]*b[0][j]+a[i][1]*b[1][j];}}return c;}public static void main(String[] args) {int ans = climbStairs(2);System.out.println(ans);}}

//时间复杂度:由于变成了矩阵的幂乘时间缩短到O(logn)

//空间复杂度O(1)

递归下楼梯方法 5: Binets 方法相关推荐

  1. Linux下常见文件解压方法及命令

    Linux下常见文件解压方法及命令时间:2007-01-08 18:34来源:CSDN作者:bitsCN编辑字体:[大 中 小]1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩 ...

  2. php怎么用递归函数遍历多维数组,php递归遍历多维数组的方法

    php递归遍历多维数组的方法 本文实例讲述了php递归遍历多维数组的方法.分享给大家供大家参考.具体如下: function get_array_elems($arrResult, $where=&q ...

  3. php网页抓取类,php实现递归抓取网页类的方法

    这篇文章主要介绍了php实现递归抓取网页类,实例分析了php递归操作及网页抓取的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php实现递归抓取网页类的方法.具体如下:<?php ...

  4. File类(常用方法、遍历目录下的文件、listFiles()方法和删除文件及目录)

    File类 File类的常用方法 Filie类常用的构造方法 File(String pathname) //通过指定的一个字符串类型的文件路径来创建一个新的File对象 File(String pa ...

  5. oracle home 命令,$ORACLE_HOMEbin目录下所有命令的使用方法及命令详解

    求$ORACLE_HOME/bin目录下所有命令的使用方法及命令详解 如题. $ORACLE_HOME/bin目录下有很多命令,那我们平时用到的也不是太多,即使用到的那部分可能用法也不是完全能掌握,所 ...

  6. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

  7. mysql alter engine_MySQL_mysql下修改engine引擎的方法,修改my.ini,在[mysqld]下加上 - phpStudy...

    mysql下修改engine引擎的方法 修改my.ini,在[mysqld]下加上 default-storage-engine=INNODB 其中红色字体部分是要指定的引擎名称. 用sql语句修改已 ...

  8. linux temp文件夹在哪_Win10系统下使用linux命令的方法

    Win10系统是目前主流的操作系统之一,其功能十分强大,而在Windows10系统下也是能够使用linux命令,只是不少用户不知道而已.那么如何在Win10系统下使用linux命令?下面小编分享一下W ...

  9. android keytool 不是内部命令或外部命令在 (win7下不能用的解决方法)

    android 关于MD5指纹中 keytool在win7下不能用的解决方法 只要在cmd中执行如下命令即可:注意C:\Users\Administrator\.android\debug.keyst ...

最新文章

  1. CUDA: GPU高性能运算
  2. IOS 实现QQ好友分组展开关闭功能
  3. i18n国际化登录页面
  4. strcmp可以比较数组么_C语言数组越界了,后果很严重,如何避免?
  5. db2如何锁定一张表_DB2数据库为单个会话锁定的技巧
  6. 5.12 操作系统——进程调度
  7. Redisbook学习笔记(3)数据类型之字符串
  8. 【小米盒子3】刷机Android TV+电视家做极简电视
  9. fastdfs 原理与过程
  10. 用freepy一键生成中美GDP季度对比柱状图
  11. win10注册表损坏开机蓝屏修复
  12. 2022年国家高新技术企业申报秘笈来了
  13. ESM2蛋白预训练模型 蛋白质、氨基酸向量表示
  14. 付宇泽20190919-5 代码规范,结对要求
  15. xmms安装配置工作记录
  16. 域内提权之MS14-068
  17. LeetCode力扣-----Python----Day1
  18. pdfbox替换模板标签,并将多个pdf合并为一个pdf(有图片插入图片)
  19. Verilog实现1位全加器及输出逻辑解析
  20. 【生活】零基础素描学习记录

热门文章

  1. 腾讯作为ApacheCon2019主会唯一受邀中国企业亮相谈开源
  2. 基于php的中小型服装厂原料采购系统
  3. 从用料做工看主板质量
  4. Openlayers 6.2.1 浅尝心得(三)
  5. JAVAScript把把文件数据保存到本地(下载文件)
  6. 美颜直播调(20181224)
  7. 全国城市一卡通一级TSM平台业务架构及意义
  8. 如何构建一个相对安全的账号体系?
  9. uni-app仿抖音评论列表
  10. 头歌实践实践教学平台:Java面向对象 - 封装、继承和多态的综合练习