首页 > 其他分享 >LCR 088. 使用最小花费爬楼梯

LCR 088. 使用最小花费爬楼梯

时间:2024-03-17 18:12:23浏览次数:16  
标签:下标 088 爬楼梯 台阶 len 阶梯 cost LCR dp

数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。
每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。
请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。

题解
主要方法:动态规划
解决思路:对于到达当前台阶,总共有两种走法,一种是跨一个台阶即从i-1台阶走到当前位置,还有一个就是跨两个台阶走到当前位置,即从i-2台阶处走到当前位置。所以走到当前位置目前消耗的体力有两种dp[i-1]+cost[i-1] 或者 dp[i-2]+cost[i-2], 当然是取最小值,所以状态转移公式为:min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        dp = [0 for i in range(len(cost)+1)]
        dp[0] = dp[1]
        for i in range(2, len(cost)+1):
            dp[i] = min(dp[i-1] + cost[i-1], dp[i-2]+cost[i-2])
        return dp[len(cost)]

❗容易忽略的点:dp的长度应该是n+1,因为要计算的是达到最高地方所消耗的体力,而dp[i]记录的是达到当前位置所消耗的体力,还有就是由于一开始可以选择在0或者1作为初始点,因此dp[0]=dp[1]=0

标签:下标,088,爬楼梯,台阶,len,阶梯,cost,LCR,dp
From: https://www.cnblogs.com/zhumeili/p/18078910

相关文章

  • LCR 071. 按权重随机选择
    题目:给定一个正整数数组w,其中w[i]代表下标i的权重(下标从0开始),请写一个函数pickIndex,它可以随机地获取下标i,选取下标i的概率与w[i]成正比。例如,对于w=[1,3],挑选下标0的概率为1/(1+3)=0.25(即,25%),而选取下标1的概率为3/(1+3)=0.75(即,75%)。也......
  • 动态规划·爬楼梯问题(一维)与印章问题(二维)
    算法介绍动态规划(DynamicProgramming)的核心是当前状态的解由上一状态得到。算法将求解问题分解成多个相似的子问题,每个子问题的解由上一个子问题的解得到并储存,往往用于优化递归问题,减少相同子问题的重复计算。一维动态规划·爬楼梯问题问题描述假设你正在爬楼梯,需要n ......
  • LCR 016. 无重复字符的最长子串(中)
    目录题目题解:滑动窗口题目给定一个字符串s,请你找出其中不含有重复字符的最长连续子字符串的长度。示例1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子字符串是"abc",所以其长度为3示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子字......
  • LCR 159. 库存管理 IIIc
    经典快排/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/intdivide(int*a,inthead,inttail){intt=a[head];while(head<tail){while(head<tail&&a[tail]>t)tail--;if(head<tail)......
  • 代码随想录算法训练营第四十五天 | 279.完全平方数,322. 零钱兑换,70. 爬楼梯 (进阶)
    57.爬楼梯(第八期模拟笔试)时间限制:1.000S空间限制:128MB题目描述假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬至多m(1<=m<n)个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。输入描述输入共一行,包含两个正整数,分......
  • 代码随想录算法训练营第四十五天| ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全
    爬楼梯 (进阶)题目链接:57.爬楼梯(第八期模拟笔试)(kamacoder.com)思路:笑嘻了,直接给默写出来了。#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,m;cin>>n>>m;vector<int>dp(n+1);dp[0]=1;for(inti=1;i<=n;i++){for(in......
  • LCR 183. 望远镜中最高的海拔(双端队列)
    科技馆内有一台虚拟观景望远镜,它可以用来观测特定纬度地区的地形情况。该纬度的海拔数据记于数组 heights ,其中 heights[i] 表示对应位置的海拔高度。请找出并返回望远镜视野范围 limit 内,可以观测到的最高海拔值。示例1:输入:heights=[14,2,27,-5,28,13,39],limit=......
  • [LeetCode][LCR174] 寻找二叉搜索树中的目标节点
    题目LCR174.寻找二叉搜索树中的目标节点某公司组织架构以二叉搜索树形式记录,节点值为处于该职位的员工编号。请返回第cnt大的员工编号。示例1:输入:root=[7,3,9,1,5],cnt=27/\39/\15输出:7示例2:输......
  • 746. 使用最小花费爬楼梯c
    intmin(inti,intj){if(i<j)returni;returnj;}intminCostClimbingStairs(int*cost,intcostSize){int*dp=(int*)malloc(sizeof(int)*(costSize+3));dp[0]=0;dp[1]=0;for(inti=2;i<=costSize;i++){dp[i]=min(dp[i-......
  • leetcode 528/ LCR 071 按权重随机选择
    leetcode528/LCR071按权重随机选择528.按权重随机选择LCR071.按权重随机选择题目描述给定一个正整数数组w,其中w[i]代表下标i的权重(下标从0开始),请写一个函数pickIndex,它可以随机地获取下标i,选取下标i的概率与w[i]成正比。例如,对于w=[1,3],挑选下标0......