zoukankan      html  css  js  c++  java
  • LeetCode(509. 斐波那数)

    问题描述:

    斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 01 开始,后面的每一项数字都是前面两项数字的和。也就是:

    F(0) = 0,   F(1) = 1
    F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
    

    给定 N,计算 F(N)

    示例 1:

    输入:2
    输出:1
    解释:F(2) = F(1) + F(0) = 1 + 0 = 1.
    

    示例 2:

    输入:3
    输出:2
    解释:F(3) = F(2) + F(1) = 1 + 1 = 2.
    

    示例 3:

    输入:4
    输出:3
    解释:F(4) = F(3) + F(2) = 2 + 1 = 3. 
    

    提示:

    • 0 ≤ N ≤ 30

    解答:

    1.数组位移

    class Solution:
        def fib(self, N):
            """
            :type N: int
            :rtype: int
            """
            a,b = 0,1
            for _ in range(1,N+1):
                a, b = b, a+b
            return a 
    

    时间复杂度:O(N)

    2.数学公式

    class Solution:
        def fib(self, N):
            """
            :type N: int
            :rtype: int
            """
            phi = (1+5**0.5)/2
            return int((phi**N-(-phi)**-N)/(5**0.5))
    

    时间复杂度:O(1)

    这种解法是考验数学功底了,和数组已经没有大关系

  • 相关阅读:
    wpf图片查看器,支持鼠标滚动缩放拖拽
    Python 3.x 学习笔记--杂
    Python 3.x 模块
    python 连接kafka
    Oracle问题
    Device Mapper Multipath(DM-Multipath)
    各种书籍
    Centos 6.x系统
    老男孩Python 3.x 讲义
    Python 3.x 学习笔记
  • 原文地址:https://www.cnblogs.com/huang-yc/p/10261533.html
Copyright © 2011-2022 走看看