You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
跳台阶,之前写过递归的,这次写个非递归的。
到第n层的方式 其实就是 到第n-1层的方式(爬一层)和到第n-2层的方式(爬两层)的和
class Solution { public: int climbStairs(int n) { if(n <= 0) return 0; else if(n == 1) return 1; else if(n == 2) return 2; else { int way1 = 2; int way2 = 1; int ans = 0; for(int i = 3; i <= n; i++) { ans = way1 + way2; way2 = way1; way1 = ans; } return ans; } } };
时间: 2024-10-07 14:12:45