爬樓梯
- 題目
- 大緻思路
- 代碼實作
題目
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxsmeNRTSE9kMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2IDOzEDO0cTM1ATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
大緻思路
- 這題我們先羅列一下結果,找規律即可。
- n=1 1
- n=2 2
- n=3 3
- n=4 5 1111 112 121 22 211
- n=5 8 11111 1112 1121 1211 122 2111 212 221
- 規律為,第n個結果為n-1的結果+n-2的結果,是以變為一道數學題。
代碼實作
class Solution {
public int climbStairs(int n) {
//這個判斷必須加,否則索引出界,報錯:java.lang.ArrayIndexOutOfBoundsException
if(n==1)
return 1;
int[] res = new int[n+1];
res[0] = 0;
res[1] = 1;
res[2] = 2;
for(int i = 3;i<n+1;i++){
res[i] = res[i-1]+res[i-2];
}
return res[n];
}
}