使用Python的最低成本攀登楼梯

假设有一个阶梯,这里的第i步将分配一些非负成本值cost [i]。当我们支付费用时,我们可以爬一两个步骤。我们必须找到达到最低要求的最低成本,我们也可以从索引为0的步骤开始,或者从索引为1的步骤开始。

因此,如果输入类似于cost = [12,17,20],则输出将为17,这是从步骤1开始的最便宜的头寸,因为我们必须支付该费用并转到顶部。

为了解决这个问题,我们将遵循以下步骤-

  • dp:=一个与cost大小相同的数组,并用0填充

  • dp [0]:=成本[0]

  • 如果成本大小> = 2,则

    • dp [1]:=成本[1]

  • 对于成本范围2中的i-1

    • dp [i]:=成本[i] + dp [i-1],dp [i-2]的最小值

  • 返回dp [-1],dp [-2]的最小值

让我们看下面的实现以更好地理解-

示例

class Solution:
   def minCostClimbingStairs(self, cost):
      dp = [0] * len(cost)
      dp[0] = cost[0]
      if len(cost) >= 2:
         dp[1] = cost[1]
      for i in range(2, len(cost)):
         dp[i] = cost[i] + min(dp[i-1], dp[i-2])
      return min(dp[-1], dp[-2])
ob = Solution()print(ob.minCostClimbingStairs([12,17,20]))

输入项

[12,17,20]

输出结果

17