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

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

题目:

题解:

type matrix [2][2]int

func multiply(a, b matrix) (c matrix) {
    for i := 0; i < 2; i++ {
        for j := 0; j < 2; j++ {
            c[i][j] = a[i][0]*b[0][j] + a[i][1]*b[1][j]
        }
    }
    return
}

func pow(a matrix, n int) matrix {
    ret := matrix{{1, 0}, {0, 1}}
    for ; n > 0; n >>= 1 {
        if n&1 == 1 {
            ret = multiply(ret, a)
        }
        a = multiply(a, a)
    }
    return ret
}

func fib(n int) int {
    if n < 2 {
        return n
    }
    res := pow(matrix{{1, 1}, {1, 0}}, n-1)
    return res[0][0]
}

http://www.kler.cn/a/370274.html

相关文章:

  • 计算机网络 (54)系统安全:防火墙与入侵检测
  • Mac 使用 GVM 管理多版本 Go 环境
  • 基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响
  • C++语言的文件操作
  • Scala语言的循环实现
  • 鸿蒙开发中的骨架图:提升用户体验的关键一环
  • HttpServer模块 --- 封装TcpServer支持Http协议
  • 基于neo4j的鸟类百科知识图谱问答系统
  • QT 中彻底解决中文乱码问题的指南
  • appium文本输入的多种形式
  • 使用微信免费的内容安全识别接口,UGC场景开发检测违规内容功能
  • Claude 3.5新模型发布:Sonnet与Haiku双雄登场,助力开发者高效创作
  • python基础(类、实例、属性、方法)
  • vue3 中 props 使用 ts 类型定义复杂类型
  • SVN常用命令
  • Android 下载进度条HorizontalProgressView 基础版
  • Docker 部署MongoDb
  • 【网路原理】——HTTP状态码和Postman使用
  • 【Vscode】设置
  • Unity自定义数组在Inspector窗口的显示方式
  • 【10天速通Navigation2】(四) :ORB-SLAM3的ROS2 humble编译和配置
  • 如何在Linux系统中管理和优化Swap空间
  • 论文阅读工具:arXiv、papers.cool、txyz
  • antvG6如何实现节点动画、连线动画、切换节点图标
  • 网络安全的重要性及实践指南
  • Python语言实现刑事犯罪罪名判定算法