【LeetCode】每日一题 2023_12_7 出租车的最大盈利(动态规划)

文章目录

刷题前唠嗑


LeetCode?启动!!!

题目:出租车的最大盈利

题目链接:2008. 出租车的最大盈利

题目描述

代码与解题思路

go 复制代码
func maxTaxiEarnings(n int, rides [][]int) int64 {
    type pair struct{ s, p int } // 一个存上车点, 一个存盈利
    group := make([][]pair, n+1) 
    for _, r := range rides {
        start, end, tip := r[0], r[1], r[2]
        group[end] = append(group[end], pair{start, end-start+tip}) // 根据 end 存 pair
    }
    dp := make([]int64, n+1)
    for i := 2; i <= n; i++ {
        dp[i] = dp[i-1] // 填 dp 数组, 无论有没有更改, 都先把上一个最大盈利继承一下
        for _, v := range group[i] {
            dp[i] = max(dp[i], dp[v.s]+int64(v.p)) // 遍历所有 end 为 i 的情况的最大盈利
        }
    }
    return dp[n]
}

核心思路在于,记录样例中相同 end 的乘客的情况,然后遍历求出最大盈利的情况更新 dp 数组。

还有一种解法是,先 sort 一下,然后根据相同 start 的乘客的情况,然后用也是老办法用 dp 求解,通过 二分/优先级队列(堆) 来优化 dp,具体我就不 CV 了,摆了

相关推荐
森焱森3 分钟前
无人机三轴稳定化控制(1)____飞机的稳定控制逻辑
c语言·单片机·算法·无人机
循环过三天7 分钟前
3-1 PID算法改进(积分部分)
笔记·stm32·单片机·学习·算法·pid
蓝澈112123 分钟前
弗洛伊德(Floyd)算法-各个顶点之间的最短路径问题
java·数据结构·动态规划
闪电麦坤9532 分钟前
数据结构:二维数组(2D Arrays)
数据结构·算法
凌肖战44 分钟前
力扣网C语言编程题:快慢指针来解决 “寻找重复数”
c语言·算法·leetcode
埃菲尔铁塔_CV算法1 小时前
基于 TOF 图像高频信息恢复 RGB 图像的原理、应用与实现
人工智能·深度学习·数码相机·算法·目标检测·计算机视觉
NAGNIP2 小时前
一文搞懂FlashAttention怎么提升速度的?
人工智能·算法
Codebee2 小时前
OneCode图生代码技术深度解析:从可视化设计到注解驱动实现的全链路架构
css·人工智能·算法
刘大猫262 小时前
Datax安装及基本使用
java·人工智能·算法