zoukankan      html  css  js  c++  java
  • 【LeetCode】面试题10-1. 斐波那契数列

    题目:

    思路:

    • 循环求余
      (x + y) % p = (x % p + y % p) % p,避免超过Int32的取值范围,导致大数越界。
    • 递归法存在大量的重复运算(比如计算n和n-1是都会计算n-2),会超时。
    • 动态规划,利用dp数组。
    • 因为第n项只和前两个元素有关,所以只记录前两个元素。

    代码:

    Python

    class Solution(object):
        def fib(self, n):
            """
            :type n: int
            :rtype: int
            """
            # 递归 20/51 超时
            # if n == 0:
            #     return 0
            # if n == 1:
            #     return 1
            # return (self.fib(n - 1) + self.fib(n - 2)) % 1000000007
            #  动态规划
            # dp = []
            # dp.append(0)
            # dp.append(1)
            # for i in range(2, n+1):
            #     dp.append((dp[i - 1] + dp[i - 2]) % 1000000007)
            # return dp[n]
            # 交替记忆n-1和n-2
            n2, n1 = 0, 1
            for _ in range(n):
                n2, n1 = n1, n2 + n1
            return n2 % 1000000007
    
  • 相关阅读:
    php或JS中输出判断项
    拿大神的博客来记一下
    2017.6.8 项目进展
    2017.6.8
    2017.5.18
    2017.5.17
    2017.5.16
    如何实现从php传数据到js
    项目笔记
    tp框架之Model类与命名空间
  • 原文地址:https://www.cnblogs.com/cling-cling/p/12911938.html
Copyright © 2011-2022 走看看