递归下楼梯方法 5: Binets 方法
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 方法相关推荐
- Linux下常见文件解压方法及命令
Linux下常见文件解压方法及命令时间:2007-01-08 18:34来源:CSDN作者:bitsCN编辑字体:[大 中 小]1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩 ...
- php怎么用递归函数遍历多维数组,php递归遍历多维数组的方法
php递归遍历多维数组的方法 本文实例讲述了php递归遍历多维数组的方法.分享给大家供大家参考.具体如下: function get_array_elems($arrResult, $where=&q ...
- php网页抓取类,php实现递归抓取网页类的方法
这篇文章主要介绍了php实现递归抓取网页类,实例分析了php递归操作及网页抓取的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php实现递归抓取网页类的方法.具体如下:<?php ...
- File类(常用方法、遍历目录下的文件、listFiles()方法和删除文件及目录)
File类 File类的常用方法 Filie类常用的构造方法 File(String pathname) //通过指定的一个字符串类型的文件路径来创建一个新的File对象 File(String pa ...
- oracle home 命令,$ORACLE_HOMEbin目录下所有命令的使用方法及命令详解
求$ORACLE_HOME/bin目录下所有命令的使用方法及命令详解 如题. $ORACLE_HOME/bin目录下有很多命令,那我们平时用到的也不是太多,即使用到的那部分可能用法也不是完全能掌握,所 ...
- linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解
本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...
- mysql alter engine_MySQL_mysql下修改engine引擎的方法,修改my.ini,在[mysqld]下加上 - phpStudy...
mysql下修改engine引擎的方法 修改my.ini,在[mysqld]下加上 default-storage-engine=INNODB 其中红色字体部分是要指定的引擎名称. 用sql语句修改已 ...
- linux temp文件夹在哪_Win10系统下使用linux命令的方法
Win10系统是目前主流的操作系统之一,其功能十分强大,而在Windows10系统下也是能够使用linux命令,只是不少用户不知道而已.那么如何在Win10系统下使用linux命令?下面小编分享一下W ...
- android keytool 不是内部命令或外部命令在 (win7下不能用的解决方法)
android 关于MD5指纹中 keytool在win7下不能用的解决方法 只要在cmd中执行如下命令即可:注意C:\Users\Administrator\.android\debug.keyst ...
最新文章
- CUDA: GPU高性能运算
- IOS 实现QQ好友分组展开关闭功能
- i18n国际化登录页面
- strcmp可以比较数组么_C语言数组越界了,后果很严重,如何避免?
- db2如何锁定一张表_DB2数据库为单个会话锁定的技巧
- 5.12 操作系统——进程调度
- Redisbook学习笔记(3)数据类型之字符串
- 【小米盒子3】刷机Android TV+电视家做极简电视
- fastdfs 原理与过程
- 用freepy一键生成中美GDP季度对比柱状图
- win10注册表损坏开机蓝屏修复
- 2022年国家高新技术企业申报秘笈来了
- ESM2蛋白预训练模型 蛋白质、氨基酸向量表示
- 付宇泽20190919-5 代码规范,结对要求
- xmms安装配置工作记录
- 域内提权之MS14-068
- LeetCode力扣-----Python----Day1
- pdfbox替换模板标签,并将多个pdf合并为一个pdf(有图片插入图片)
- Verilog实现1位全加器及输出逻辑解析
- 【生活】零基础素描学习记录