I、題する説明
タイトル70クライミング階段、階段(階段)を登って、一つのステップ1,2を登ることができ、n層方式を登るためのいくつかのステップがあります。難易度は簡単です!
第二に、私の答え
同様の話題が行われ、問題は非常に簡単になります。まず、再帰的計算:
class Solution{
public:
int climbStairs(int n){
if(n==1) return 1;
if(n==2) return 2;
return climbStairs(n-1) + climbStairs(n-2);
}
};
非常にTime Limit Exceeded
申し訳ありません。
Dpのアルゴリズムは、それを使用します。
class Solution{
public:
int climbStairs(int n){
if(n==1) return 1;
if(n==2) return 2;
vector<int>dp;
dp.push_back(1);
dp.push_back(2);
for(int i=2;i<n;i++){
dp.push_back(dp[i-1]+dp[i-2]);
}
return dp[n-1];
}
};
パフォーマンス:
Runtime: 4 ms, faster than 55.03% of C++ online submissions for Climbing Stairs.
Memory Usage: 8.4 MB, less than 51.47% of C++ online submissions for Climbing Stairs.
第三に、最適化の対策
最適化されていません!