Java算法題(來自lettcode)----17 爬樓梯(動態規劃)

題目:

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是一個正整數。

示例 1:

輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1.  1 階 + 1 階
2.  2 階

示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1.  1 階 + 1 階 + 1 階
2.  1 階 + 2 階
3.  2 階 + 1 階

 思路:

我是借鑑這個的,這個漫畫講的真的很透徹,建議大家看一下,對自己一定會有很大的幫助。

https://mp.weixin.qq.com/s/3h9iqU4rdH3EIy5m6AzXsg

看完後寫出下面代碼:

    public static int climbStairs(int n) {
		if (n <= 0)
			return 0;
		if (n <= 1)
			return 1;
		// 上一次
		int oneStep = 1;
		// 上上一次
		int twoStep = 1;
		int result = 0;
		for (int i = 1; i < n; i++) {
			result = oneStep + twoStep;
			twoStep = oneStep;
			oneStep = result;
		}
		return result;
	}

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章