Java | Leetcode Java题解之第509题斐波那契数

题目:

题解:

java 复制代码
class Solution {
    public int fib(int n) {
        if (n < 2) {
            return n;
        }
        int[][] q = {{1, 1}, {1, 0}};
        int[][] res = pow(q, n - 1);
        return res[0][0];
    }

    public 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 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;
    }
}
相关推荐
世间万物皆对象几秒前
Java 基础教学:方法与数组-数组
java·开发语言·python
BLOB_10100110 分钟前
【折腾一上午】Java POI 导出 Excel 自适应列宽行高
java·excel
布值倒区什么name21 分钟前
日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
java·spring boot·后端
single59424 分钟前
【综合算法学习】(第十篇)
java·数据结构·c++·vscode·学习·算法·leetcode
wclass-zhengge27 分钟前
SpringBoot篇(自动装配原理)
java·spring boot·后端
哎呦没34 分钟前
中小企业设备管理效率提升:Spring Boot系统设计
java·spring boot·后端
ZWZhangYu37 分钟前
【MyBatis源码】SqlSource对象创建流程
java·tomcat·mybatis
Yaml439 分钟前
Spring Boot整合EasyExcel:实现大规模数据的并行导出与压缩下载
java·开发语言·spring boot
Kobebryant-Manba40 分钟前
sqlyog软件
java·sql
free_girl_fang44 分钟前
夯实根基之MySql从入门到精通(一)
java·数据结构·数据库·mysql