LeetCode070 Climbing Stairs

来源:互联网 发布:阿里云 欧洲节点 编辑:程序博客网 时间:2024/06/10 15:20

详细见:leetcode.com/problems/climbing-stairs


Java Solution: github

package leetcode;/* * 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? */public class P070_ClimbingStairs {public static void main(String[] args) {System.out.println(new Solution().climbStairs(5));}/* * 1 ms * 4.24% */static class Solution {    public int climbStairs(int n) {    int a = 1, b = 2, c = 2, d = 2;    if (n == 1)    return a;    if (n == 2)    return b;    while (c != n) {    d = a + b;    a = b;    b = d;    c ++;    }    return d;    }}}


C Solution: github

/*    url: leetcode.com/problems/climbing-stairs    AC 0ms 46.50%*/int climbStairs(int n) {    int* h, i = 0;    if (n < 3) return n;    h = (int*) malloc(sizeof(int) * n);    h[0] = 1;    h[1] = 2;    for (i = 2; i < n; i ++) {        h[i] = h[i-1] + h[i-2];    }    i = h[n-1];    free(h);    return i;}


Python Solution: github

#coding=utf-8'''    url: leetcode.com/problems/climbing-stairs    @author:     zxwtry    @email:      zxwtry@qq.com    @date:       2017年4月16日    @details:    Solution: 39ms 67.67%'''class Solution(object):    def climbStairs(self, n):        """        :type n: int        :rtype: int        """        if n < 3: return n        dp = [0] * (n+1)        dp[1] = 1        dp[2] = 2        for i in range(3, n+1):            dp[i] = dp[i-1]+dp[i-2]        return dp[n]


0 0