• leetcode 剑指 Offer 10- I. 斐波那契数列


    题目描述:

    写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:

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

    斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

    答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

    样例:

    示例 1:

    输入:n = 2
    输出:1

    示例 2:

    输入:n = 5
    输出:5

    提示:

        0 <= n <= 100

    解题思路:

    动态规划:

        状态定义: 设 dp为一维数组,其中 dp[i] 的值代表 斐波那契数列第 i 个数字 。
        转移方程: dp[i+1]=dp[i]+dp[i−1] ,即对应数列定义 f(n+1)=f(n)+f(n−1);
        初始状态: dp[0]=0, dp[1]=1 ,即初始化前两个数字;
        返回值: dp[n] ,即斐波那契数列的第 n 个数字。

    求余运算规则: 设正整数 x,y,p ,求余符号为 ⊙ ,则有 (x+y)⊙p=(x⊙p+y⊙p)⊙p。

    Java程序:

    1. class Solution {
    2. public int fib(int n) {
    3. int a = 0, b = 1, sum;
    4. for(int i = 0; i < n; i++){
    5. sum = (a + b) % 1000000007;
    6. a = b;
    7. b = sum;
    8. }
    9. return a;
    10. }
    11. }
  • 相关阅读:
    boost算法
    UI框架布局
    相位误差对阵列方向图的影响
    Java自学路线图之Java进阶自学
    background-image使用
    Zookeeper初识及安装配置
    信息技术服务标准是什么
    【强化学习高阶技巧】Experience Replay经验回报
    我换了一圈儿,又回来了!
    Java——运算符
  • 原文地址:https://blog.csdn.net/kt1776133839/article/details/126009497