【leetcode】Climbing Stairs (easy)

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;

        }

    }

};

 

你可能感兴趣的:(LeetCode)