• 746. Min Cost Climbing Stairs


    1. Question:

    746. Min Cost Climbing Stairs

    https://leetcode.com/problems/min-cost-climbing-stairs/

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed).

    Once you pay the cost, you can either climb one or two steps. You need to find minimum cost to reach the top of the floor, and you can either start from the step with index 0, or the step with index 1.

    Example 1:

    Input: cost = [10, 15, 20]
    Output: 15
    Explanation: Cheapest is start on cost[1], pay that cost and go to the top.
    

    Example 2:

    Input: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
    Output: 6
    Explanation: Cheapest is start on cost[0], and only step on 1s, skipping cost[3].

    2. Solution:
    class Solution:
        def minCostClimbingStairs(self, cost):
            """
            :type cost: List[int]
            :rtype: int
            """
            if cost is None or len(cost) <= 1:
                return 0
    
            size = len(cost)
    
            if size == 2:
                return min(cost[0], cost[1])
    
            cost_bf = cost[0]
            cost_cur = cost[1]
            for i in range(2, size):
                tmp = min(cost_cur + cost[i], cost_bf + cost[i])
                cost_bf = cost_cur
                cost_cur = tmp
            return min(cost_cur, cost_bf)

    3. Complexity Analysis

    Time Complexity : O(N)

    Space Complexity: O(1)

  • 相关阅读:
    学习资料
    InstallShield常用工具
    InstallShield中调用API
    系统目录
    abort和exit
    Uninstall Registry Key
    GDI+资料
    VBScript是什么?有什么优缺点?
    DrawImage调查
    KEIL MDK环境下uCOSII在LPC17xx上的移植实例 Chung
  • 原文地址:https://www.cnblogs.com/ordili/p/9992116.html
Copyright © 2020-2023  润新知