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

刷题前唠嗑


LeetCode?启动!!!

题目:出租车的最大盈利

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

题目描述

代码与解题思路

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

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 01:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 01:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 01:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 01:24:04       20 阅读

热门阅读

  1. 力扣labuladong一刷day32天二叉树

    2023-12-10 01:24:04       41 阅读
  2. 一步一步写线程之一简单的开始

    2023-12-10 01:24:04       29 阅读
  3. 如何设计自动完成系统

    2023-12-10 01:24:04       33 阅读
  4. PCL 三维点云中求解圆的三维方程

    2023-12-10 01:24:04       36 阅读
  5. FPGA | Verilog基础语法

    2023-12-10 01:24:04       45 阅读
  6. Vue笔记(四)路由

    2023-12-10 01:24:04       33 阅读
  7. 请简要介绍一下HTML的发展史?

    2023-12-10 01:24:04       31 阅读
  8. 区间价值 --- 题解--动态规划

    2023-12-10 01:24:04       38 阅读
  9. spring 两个service相互引用,会有循环依赖吗

    2023-12-10 01:24:04       33 阅读