LeetCode #509 Fibonacci Number 費波納契數

英文原文如下

The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is,

F(0) = 0, F(1) = 1
F(n) = F(n - 1) + F(n - 2), for n > 1.

Given n, calculate F(n).

中文翻譯

費波納契數 們,通常表示為 F(n),形成一個序列,稱為費波納契數列。,其中每個數字是前兩個數字的和,然後從 0 和 1開始。

這裡是範例

給予 n ,計算 F(n)

範例及題目限制


解題思路

相信之前有追蹤我的小夥伴,應該會想說這題怎麼似曾相似的感覺吧!

沒錯,我們不是第一次遇到這個問題了

這兩題其實針對這個情況都有詳細說明過了

所以這次就不多解釋,讓我偷懶下

C# 解決方案

方案1

public class Solution {
    public int Fib(int n) {
        int first  = 0;     
        int second = 1;     
        int tmp = 0;        
        
        if(n<2)   
        {
            return n;
        }
        else
        {
            for(int i =2; i<=n;i++) 
            {
                tmp = second;       
                second+=first;     
                first = tmp;        
            }
        }
        return second;
    }
}

方案2

public class Solution {
    public int Fib(int n) {
        int[] arr = new int[31];
        arr[0] = 0;
        arr[1] = 1;
        
        for(int i = 2; i<=n; i++)
        {
            arr[i] = arr[i-1]+arr[i-2];
        }
        return arr[n];
    }
}

我們在這裡可以將array的長度設為31是因為題目限制中有說 n 介於 0 到 30之間

所以最多就是 n = 30,然後從 0 開始,共31個

Java解決方案

方案1

class Solution {
    public int fib(int n) {
        int[]arr = new int[31];

        arr[0] = 0;
        arr[1] = 1;
        
        for(int i = 2; i<=n; i++)
        {
            arr[i] = arr[i-1]+arr[i-2];
        }
        return arr[n];
    }
}

Python3 解決方案

方案1

class Solution:
    def fib(self, n: int) -> int:
        arr = [0,1]
        
        for i in range(2,n+1):
            arr.append(arr[i-1]+arr[i-2])
        
        return arr[n]

JavaScript 解決方案

方案1

/**
 * @param {number} n
 * @return {number}
 */
var fib = function(n) {
    arr = [0,1];
    
    for(let i = 2; i<=n; i++)
    {
        arr[i] = arr[i-1]+arr[i-2];
        //arr.push(arr[i-1]+arr[i-2])  //you can choose which one to use
    }
    return arr[n];
};

結論

程式很多都是重複的概念,頂多就中間換了些不同的條件

所以很多寫了幾年的工程師看起來會比較厲害,其實只是在於碰得夠多 (當然記憶力也要夠好啦哈哈XD)

🧡如果這篇文章有幫上你的一點點忙,那是我的榮幸

🧡收藏文章或幫我分享,那都是對我的小小支持

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Fibonacci Number – LeetCode

一些隨機文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *