(Java)LeetCode-70. Climbing Stairs

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?
이 문 제 는 비교적 고전적 이 고 비교적 간단 한 문제 다.
매번 1 단계 또는 2 단계 계단 을 오 를 수 있 습 니 다.n 단계 계단 을 오 르 려 면 몇 가지 오 르 는 방법 이 있 습 니까?f(n)는 간단 한 동적 계획 문제 입 니 다.f(n)=f(n-1)+f(n-2)때 문 입 니 다. 
계 산 된 f(n)를 유지 하 세 요.그렇지 않 으 면 효율 이 낮 습 니 다.코드 는 다음 과 같 습 니 다:
public class Solution {
    public int climbStairs(int n) {
        int[] flags = new int[n+1];
        for(int i = 0; i <= n; i++){
        	flags[i] = -1;
        }
        return climbStairs(flags,n);
    }

	private int climbStairs(int[] flags, int n) {
		// TODO Auto-generated method stub
		if(flags[n] != -1){
			return flags[n];
		}
		if(n == 1 || n == 0){
			flags[n] = 1;
			return 1;
		}else{
			flags[n] = climbStairs(flags,n-1) + climbStairs(flags,n-2);
			return flags[n];
		}
	}
}

좋은 웹페이지 즐겨찾기