【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 了,摆了

相关推荐
PAK向日葵2 小时前
【算法导论】PDD 0817笔试题题解
算法·面试
地平线开发者4 小时前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者5 小时前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
星星火柴9366 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑7 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
C++、Java和Python的菜鸟8 小时前
第六章 统计初步
算法·机器学习·概率论
Cx330❀8 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
散1128 小时前
01数据结构-Prim算法
数据结构·算法·图论
起个昵称吧9 小时前
线程相关编程、线程间通信、互斥锁
linux·算法
myzzb9 小时前
基于uiautomation的自动化流程RPA开源开发演示
运维·python·学习·算法·自动化·rpa