アイデア:
質問は、建物の最上部に登る方法がいくつあるかを尋ねました。フィボナッチ数列を使用することを考えるのは自然なことです。
毎回前回の結果に頼って、dpを使うことを考えてください
コード:
class Solution {
public int climbStairs(int n) {
int[] dp=new int[n+1];
dp[0]=1;
dp[1]=1;
for(int i=2;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
}
}
壊す:
1)添え字のオーバーフローを防ぐために、dpが宣言されると、長さはnに基づいて1(n + 1)加算されます。
2)これはdpの最初の形式です:(線形)
以前の状態の限られた数(2)のみに依存します