当前位置: 首页 > article >正文

LeetCode 983.最低票价

在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年时间里,你要旅行的日子将以名为 days 的数组给出。每一项是一个 1365 的整数。
火车票有三种不同的销售方式:
一张为期一天的通行证售价为cost[0]美元
一张为期七天的通行证售价为cost[1]美元
一张为期三十天的通行证售价为cost[2]美元
通行证运行数天无限制的旅行。例如,我们在第 2 天获得一张为期 7 天的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。
返回你想要完成在给定列表 days 中列出的每一天的旅行所需的最低消费。
在这里插入图片描述
CPP代码:

class Solution {
public:
    int mincostTickets(vector<int>& days, vector<int>& costs) {
        // 获取旅行的最后一天
        int lastDay = days.back();
        // 将旅行的天数存储在集合中,以便快速查找
        unordered_set<int> daysSet(days.begin(), days.end());
        // 创建一个大小为lastDay + 1的dp数组
        //用于存储从第0天到第lastDay天的最小花费
        vector<int> dp(lastDay + 1);
        // 遍历每一天
        for (int i = 1; i <= lastDay; i ++) {
            
            // 如果这一天不是旅行的日期,则前一天的最小花费就是本天的最小花费
            if(!daysSet.contains(i)) {
                dp[i] = dp[i - 1];
            } else {
                dp[i] = min({dp[i - 1] + costs[0],
                            dp[max(0, i - 7)] + costs[1],
                            dp[max(0, i - 30)] + costs[2]});
            }
        }
        return dp[lastDay];
    }
};

GO代码:

func mincostTickets(days []int, costs []int) int {
    lastDay := days[len(days) - 1]

    isTravel := make([]bool, lastDay + 1)
    for _, day := range days {
        isTravel[day] = true
    }

    dp := make([]int, lastDay + 1)
    for i := 1; i <= lastDay; i ++ {
        if !isTravel[i] {
            dp[i] = dp[i - 1]
        } else {
            dp[i] = min(dp[i - 1] + costs[0],
                        dp[max(0, i - 7)] + costs[1],
                        dp[max(0, i - 30)] + costs[2])
        }
    }
    return dp[lastDay]
}

http://www.kler.cn/news/327821.html

相关文章:

  • 前端面试:项目细节重难点问题分享(17)
  • 无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM
  • 基于MTK7981平台,学习了解理解SoC上电和boot流程
  • Thinkphp/Laravel基于vue的的出版社书籍阅读管理系统
  • Docker笔记-Docker磁盘空间清理
  • c#中的功能优势
  • 【QT Quick】基础语法:文件定义类型与枚举类型
  • 最大正方形 Python题解
  • windows下安装nginx和基本配置
  • cfg80211是怎么配置无线设备的AP的?
  • Python与MongoDB交互
  • 《一本书讲透Elasticsearch》读书笔记-索引
  • 2024年主流前端框架的比较和选择指南
  • 【学术会议征稿】2024年遥感技术与图像处理国际学术会议(RSTIP 2024)
  • taro RN 左右滑动切换页面
  • 自动驾驶 3DGS 学习笔记
  • 接口性能优化日记
  • Java高级Day51-apacheDBUtils
  • mybatis-plus与xml结合使用
  • 17【Protues单片机仿真】基于51单片机的太阳能智能谷物翻晒机器人
  • Vue 技术进阶 day2 数据监视的原理、其他内置指令、自定义指令、生命周期、组件化、VueComponent构造函数
  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • leetcode力扣刷题系列——【座位预约管理系统】
  • Vue3实现mqtt的订阅与发布
  • 【论文解析】基于开源 Matrix 指令集扩展(矢量点积)的高性能 RISC-V 处理器“香山”(nanhu 版本)的 LLM 加速的研究
  • 828华为云征文|部署多功能集成的协作知识库 AFFiNE
  • mysql如何不使用窗口函数,去统计出入库情况
  • 全视通智慧养老护理呼叫求助,打造安心舒适的养老生活
  • JavaScript 可视化案例详解
  • 了解Webpack并处理样式文件