알고리즘 문제: 계단 등반 문제

858 단어 알고리즘
LeetCode 70 번 문제:https://leetcode.com/problems/climbing-stairs/description/
이 문 제 는 Solution 에서 폭력 적 인 해결 에서 피 보 나치 와 알고리즘 최적화 까지 여섯 가지 해법 을 포함한다.
여기에 하나의 사고방식 이 추가 되 었 다. 조합 수
계단 을 오 르 는 문 제 는 한 걸음, 두 걸음 의 걷 기 가 최종 적 으로 결승점 에 도달 하 는 것 이다.
n 개의 공 을 얻 는 것 으로 추상 화 할 수 있 고 한 번 에 두 개 를 얻 을 수 있 으 며 한 번 에 하 나 를 얻 을 수 있 으 며 최종 적 으로 다 얻 을 때 까지 모두 얼마나 많은 방법 이 있 습 니까?
1 개 2 와 (n - 2) 개 1... n / 2 개 2 와 (n - n / 2) 개 1 의 배열 조합 수 를 합 친 코드 는 다음 과 같다.
class Solution(object):
    def climbStairs(self, n):
        count = 0
        for i in xrange(0, n//2+1):
             count += self.cni(n-i, i)
        return count

    def cni(self,n,i):
        result = 1
        for j in range(0, i):
            result = result * (n-j) // (j+1)
        return result

공간 복잡 도 O (1), 시간 복잡 도 O (n ^ 2) 는 피 보 나치 보다 간편 하지 못 하 다.

좋은 웹페이지 즐겨찾기