My Sixty-Second Page - 斐波那契数列 - By Nicolas
這篇page是針對leetcode上的動態規劃類題目所寫的。小尼先簡單的跟大家說明一下動態規劃這一個專題,也是小尼接下來會繼續寫的專題。小尼先說明一下解決動態規劃的五大思想,首先就是我們需要知道dp數組的下標的意義,也就是我們需要知道這個dp所定義的意義,以便于我們對后續的解題有對應的思想,第二步就是我們需要知道遞推公式,不同的dp的題目的對應的遞推公式有很大的區別,小尼在接下來的文章中會向大家一一說明的;第三步就是我們需要知道dp數組的初始化,也就是前面i為0或1時對應的值為多少,我們一定需要了解清楚;第四步就是我們就是要對動態規劃進行對應的遞歸;最后也就是第五步我們需要對dp數組輸出它的結果
小尼今天所寫的這篇page是針對leetcode上的509.斐波那契數列所寫的,小尼先簡單的說明一下題目的要求,起始就是我們數學中所學的斐波那契數列的求和,首先我們需要知道的就是什么是斐波那契數列,就是第一個數字為0第二個數字為1,然后之后所有的數字都是前面兩個數字的和,并且一直不斷的進行下去。我們int一個整數,我們需要得到的就是改整數位的結果未多少。
首先小尼給出的代碼是動態規劃的代碼,這個代碼也可以充分體現小尼上面所說的思想,接下來小尼先拉一下代碼:
class Solution {public int fib(int n) {if(n < 2){return n;}int p = 0, q = 0 , r = 1;for(int i = 2; i <= n; i++){p = q;q = r;r = p + q;}return r;} }小尼接下來簡單的說明一下這道題各個步驟的思想,首先我們需要明確我們對應的dp下的每個數組對應的含義,對于這道題目還是比較簡單的,因為這道題目的dp中對應的每一個數據起始就是我們的第i個斐波那契數,然后我們第二部需要明確的就是遞推公式,起始這里的遞推公式也不是很難,這里的遞推公式就是dp[i]=dp[i-1]+dp[i-2],然后就是需要明確我們的數組是如何變化的,在本題中就是運用了for循環的方式進行,第四步就是確定遞歸的遍歷,最后我們只需要返回遞歸的結果就可以了
小尼接下來給出純遞歸的方法小尼先拉一下代碼:
class Solution {public int fib(int n) {if (n == 0) return 0;if( n <= 2) return 1;return fib(n - 1) + fib(n - 2);} }這邊小尼給出的純遞歸的方法小尼認為絕大多數應該都寫過對應的。
希望上面的代碼可以給小伙伴們帶來幫助~~~
總結
以上是生活随笔為你收集整理的My Sixty-Second Page - 斐波那契数列 - By Nicolas的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器硬盘型号详解
- 下一篇: 说说Stack Overflow和Quo