题目链接:click~
/*题意:n阶的台阶,每次只能上一步或两步,共有多少种方法 */ /** *思路:简单递推,d[i] = d[i-1] + d[i-2] * 两种方法,一种空间复杂度O(1),另一种O(n) */ //O(1) class Solution { public: int climbStairs(int n) { if(n <= 2) return n; int d1 = 1, d2 = 2, d3; for(int i = 3; i <= n; i ++) { d3 = d1+d2; d1 = d2; d2 = d3; } return d3; } }; /* O(n) class Solution { public: int climbStairs(int n) { int *d = new int[n+1]; if(n <= 2) return n; d[1] = 1, d[2] = 2; for(int i = 3; i <= n; i++) d[i] = d[i-1] + d[i-2]; return d[n]; } }; */
时间: 2024-10-25 08:28:05