劍指 Offer 10- II. 青蛙跳臺階問題Java

Unknown To Known發表於2020-12-14

一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個 n 級的臺階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

f(1)表示跳到第一個臺階的路徑數
用f(2)表示跳到第二個臺階的路徑數
用f(3)表示跳到第三個臺階的路徑數
用f(4)表示跳到第四個臺階的路徑數
用f(n)表示跳到第n個臺階的路徑數

當有0個臺階時,有一種方式(演算法上的規定)
當有1個臺階時,有一種方式
當有2個臺階時,有兩種方式
當有3個臺階時,有三種方式  f(1)+f(2)=1+2=3   
			   這個時候,你站在第一個臺階上到第三個臺階有兩種情況,
						    方法一:從第一個臺階跳兩步到達。有f(1)種路徑。
							方法二:從第二個臺階跳一步到達。有f(2)種路徑。
當有4個臺階時,有5種方式  f(2)+f(3)=3+2=5   
			   這個時候,你站在第一個臺階上到第三個臺階有兩種情況,
						    方法一:從第二個臺階跳兩步到達。有f(2)種路徑。
							方法二:從第三個臺階跳一步到達。有f(3)種路徑。
							
public int numWays(int n) {
        if(n<=1){
            return 1;
        }
        int[] nums = new int[n+1];
		nums[0] = 1;//臺階為0
		nums[1] = 1;//臺階為1
		for(int i =2 ;i<n+1;i++) {
			nums[i]=(nums[i-1]+nums[i-2])%1000000007;
        }
        return nums[n];
    }

相關文章