2023年5月6日 星期六

5/5 每日一題

 You are climbing a staircase. It takes n steps to reach the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

 

Example 1:

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

Example 2:

Input: n = 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

 

Constraints:

  • 1 <= n <= 45

class Solution:

def f(self,x): if x==1: return 1 if x == 0: return 1 return x*self.f(x-1) def c(self,n,k): return self.f(n)//((self.f(k))*(self.f(n-k))) def climbStairs(self, n: int) -> int: z = n // 2 method=0 i=0 if n%2==0: while n-(2*i)>=0: method=method+self.c((n-1*i),(n-2*i)) i+=1 else: while n-(2*i)>0: method=method+self.c((n-1*i),(n-2*i)) i+=1 return method


最佳解 動態規劃DP

class Solution:
    def climbStairs(self, n: int) -> int:
        one,two=1,1
        for i in range(n-1):
            temp=one+two
            one=two
            two=temp
        return two
    #please upvote me it would encourage me alot












標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁