Leetcode之Climbing Stairs

题目:

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?

Note: Given n will be a positive integer.

Example 1:

Input: 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps

Example 2:

Input: 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step

代码:

class Solution {
public:
    int climbStairs(int n) {
        if (n <= 0)return 0;
	
	int* distinct = new int[n];
	for (int i = 0; i < n; i++) {
		distinct[i] = -1;
	}

	for (int i = 0; i < n; i++) {
		if (i == 0) {
			distinct[i] = 1;
		}
		else if (i == 1) {
			distinct[i] = 2;
		}
		else {
			distinct[i] = distinct[i - 1] + distinct[i - 2];
		}
	}
	int res = distinct[n - 1];
	delete[] distinct;
	return res;
    }
};

想法:

动态规划

上一篇:70. Climbing Stairs


下一篇:LeetCode: 241. Different Ways to Add Parentheses