Home > Blockchain >  LeetCode Climbing Stairs
LeetCode Climbing Stairs

Time:12-31

I tried to separate the climbing scenarios into scenarios of how many 2 steps can be taken and to solve the question according to the sum of the combinations of the moments where 2 steps can be taken in these scenarios.

import math
class Solution:

    def climbStairs(self, n: int) -> int:
        def faktoriyel(a) -> int:
            sonuc=1
            for i in range(1,a 1):
                sonuc=sonuc*i
            return sonuc
        def permutasyon(a,b) -> int:  
          return faktoriyel(a)/faktoriyel(a-b)
        t=math.trunc(n/2) # how many two steps can be taken
        sonuc=0
        for i in range(1,t 1):
            sonuc=sonuc int(permutasyon(n-i,i)/faktoriyel(i))
        return sonuc 1 #  1 is for scenario that only using one steps

Constraints:

1 <= n <= 45

It says wrong answer only for n=43 and n=45. The rest of inputs are correct. I don't understand why its wrong for 43 and 45. Can somebody explain this ? result for n=43 result for n=45

CodePudding user response:

you just need to do floor division (use //) instead of floating point division (not /)

ie case 1: 5/2 - > 2.5, case 2: 5//2 -> 2 since stairs or steps cant be in decimal and should be integer do floor division ie case 2 so your code should be

import math
class Solution:

    def climbStairs(self, n: int) -> int:
        def faktoriyel(a) -> int:
            sonuc=1
            for i in range(1,a 1):
                sonuc=sonuc*i
            return sonuc
        def permutasyon(a,b) -> int:
          return faktoriyel(a)//faktoriyel(a-b)
        t=math.trunc(n//2) # how many two steps can be taken
        sonuc=0
        for i in range(1,t 1):
            sonuc=sonuc int(permutasyon(n-i,i)//faktoriyel(i))
        return sonuc 1 #  1 is for scenario that only using one steps
  • Related