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;
    }
}
相关推荐
a程序小傲5 分钟前
小红书Java面试被问:java创建对象有哪些方式?
java·开发语言·面试
代码or搬砖13 分钟前
Spring Cache讲解
java·后端·spring
wxin_VXbishe28 分钟前
springboot居家养老管理系统-计算机毕业设计源码55953
java·c++·spring boot·python·spring·django·php
互亿无线明明30 分钟前
国际金融短信:如何为跨境金融业务构建稳定安全的消息通知链路?
java·python·安全·eclipse·django·virtualenv·pygame
Json_30 分钟前
springboot框架 线程池使用与配置,简单粗暴直接用,再也不用自己创建线程了~
java·spring boot·后端
_半夏曲36 分钟前
maven多依赖,由于包路径一样,导致引入类错乱
java·maven
前端小张同学41 分钟前
餐饮小程序需要你们
java·前端·后端
二十雨辰44 分钟前
[SSM]Spring快速入门
java·spring
豆约翰1 小时前
Z字形扫描ccf
java·开发语言·算法
闲人编程1 小时前
权限系统设计与RBAC实现
java·网络·数据库·rbac·权限·codecapsule