class Solution {
public:
    /**
     * 
     *
     * 
     * @param cost int整型vector 
     * @return int整型
     */
    int minCostClimbingStairs(vector<int>& cost) {
        // write code here
        int n = cost.size();
        if (n == 1) { return cost[0];}
        vector<int> dp(n+1, 0);
        dp[0] = 0; dp[1] = 0; 
        // 注意审题,cost 下标从【0】开始的、顶层是【n】层不是n-1.
        for (int i = 0; i <= n; ++i) { // 
            dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        // [2,5,20]
        //0 2 5 
        // [1,100,1,1,1,90,1,1,80,1]
        // 6
        return dp[n];
    }
};