LeetCode 983.最低票价

news2024/10/2 8:55:03

在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年时间里,你要旅行的日子将以名为 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.coloradmin.cn/o/2184098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion绘画 | 来训练属于自己的模型:素材准备篇

首先要说明的是&#xff0c;模型训练&#xff0c;需要显卡持续不间断地一致运行&#xff0c; 快则0.5-1小时左右&#xff0c;慢的话可能需要跑上几小时&#xff0c;甚至是几天&#xff0c; 原因跟显卡的配置和训练设置参数都有关系。 模型训练与显卡配置&#xff1a; 训练 L…

从零开始搭建UVM平台(七)-加入monitor

书接上回&#xff1a; 从零开始搭建UVM平台&#xff08;一&#xff09;-只有uvm_driver的验证平台 从零开始搭建UVM平台&#xff08;二&#xff09;-加入factory机制 从零开始搭建UVM平台&#xff08;三&#xff09;-加入objection机制 从零开始搭建UVM平台&#xff08;四&…

sadTalker本地编译

SadTalker一款开源的可生成逼真的人像动画的工具。它利用深度学习技术&#xff0c;根据输入的图像和音频&#xff0c;生成具有生动表情和动作的视频。用户可以通过上传照片或使用预设的模型&#xff0c;轻松创建个性化的动画内容. 以上是官网的图, 下边是本地部署生成的,效果差…

Vue+NestJS项目实操(图书管理后台)

一、项目搭建 前端基于vben进行二次开发 在Github下载vben框架&#xff0c;搜索vben即可 下载地址&#xff1a;https://github.com/vbenjs/vue-vben-admin 下载完成后&#xff0c;进行安装依赖&#xff0c;使用命令&#xff1a; // 下载依赖 pnpm install// 运行项目 pnpm …

麒麟系统命令失效快速修复

麒麟系统命令失效快速修复 1、问题描述2 问题原因3、解决方法 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 1、问题描述 麒麟操作系统中&#xff0c;所有命令突然无法使用。 2 问题原因 /usr目录权限可能被错误修改。 3、解决方法 准…

MySQL基础篇 - 多表查询

01 多表关系 【1】概念&#xff1a;项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各表结构之间也存在着各种联系&#xff0c;基本上分为三种…

安装epic games错误码2738解决(安装ue错误码2738)

这个错误不好找到解决方案&#xff0c;尝试删除注册表以及通过电脑管家下载安装都不生效&#xff0c;仍然会错误2738。直到找到了这个解决方案。 1.cmd然后右键以管理员身份运行&#xff0c; 2.cd %windir%\syswow64进入该目录 3.reg delete “HKCU\SOFTWARE\Classes\Wow6432No…

HBuilder X中搭建vue-cli项目(一)

一、前端项目结构 传统结构&#xff1a;一个项目中有很多HTML文件,一个HTML文件就是一个网页。他们之间彼此独立,互相没有联系,我们每次导入其它前端文件时,需要给每一个HTML文件都导入,需要导入的文件一旦过多,就会很麻烦,并且整体看来很乱。 现代结构&#xff1a;在一个nod…

骨传导耳机哪款值得买?五款好评优选骨传导耳机分享!

科技发展的今天&#xff0c;产品设计的重心逐渐转向满足用户的行为与健康需求。耳机&#xff0c;已成为现代生活中不可缺少的电子配件&#xff0c;无论是出于日常习惯、隐私保护&#xff0c;还是在公共场合的礼貌&#xff0c;耳机都与我们形影不离。 随着耳机在日常生活中的地…

用 API 实现 AI 视频摘要:动手制作属于你的 AI 视频小助手

AI 视频摘要想必你一定不陌生&#xff0c;在各大视频平台&#xff0c;比如 B 站&#xff0c;评论区的 AI 视频小助手就如雨后春笋般遍地都是。 今天&#xff0c;让我们来填了这“护城河”&#xff0c;站到墙上看一看它的全貌。 简而言之&#xff0c;AI 视频摘要的工作流程如下&…

使用socket编程来实现一个简单的C/S模型(TCP协议)

前置 所使用到的函数查看本专栏中&#xff1a;socket的概念和常用函数介绍 1.C/S模型 - TCP 下图是基于TCP协议的客户端/服务器程序的一般流程&#xff1a; 服务器调用socket()、bind()、listen()完成初始化后&#xff0c;调用accept()阻塞等待&#xff0c;处于监听端口的状…

第7课-C/C++ 高效内存管理

1. C/C 内存分布 在 C 和 C 中&#xff0c;内存可以分为多个区域&#xff0c;包括栈、堆、数据段、代码段等。这些区域分别用来存储不同类型的数据。通过以下示例代码&#xff0c;我们可以直观地理解这些区域的作用&#xff1a; int globalVar 1; // 全局变量 sta…

停止模式下USART为什么可以唤醒MCU?

在MCU的停止模式下&#xff0c;USART之类的外设时钟是关闭的&#xff0c;但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒&#xff1a; 大家是否会好奇在外设的时钟被关闭的情况下&#xff0c;USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢&#xff1…

2024双十一有什么值得买?分享五款优质好物提高幸福感!

双十一购物节即将到来&#xff0c;这是一年中各平台打折力度最大的时期。然而&#xff0c;在众多品牌和款式中&#xff0c;我们往往难以做出选择。今天&#xff0c;我将为大家介绍一些在双十一期间值得入手的高品质商品&#xff0c;让我们一起寻找心仪之选&#xff01; 1、水陆…

【微服务】初识

基础概念 集群 集群是将一个系统完整的部署到多个服务器&#xff0c;每个服务器提供系统的所有服务&#xff0c;多个服务器可以通过负载均衡完成任务&#xff0c;每个服务器都可以称为集群的节点。 分布式 分布式是将一个系统拆分为多个子系统&#xff0c;多个子系统部署在…

入门案例解析

parent aliyun上下载的却没有parent——但是在下面导入了 这里进行了继承——且继承得里面进行了依赖管理&#xff08;插件管理也是如此&#xff09; 不同版本的SpringBoot的依赖版本会有一些不同 starter 这就可以让我使用某个技术开发就可以使用某个技术的starter …

PDSCH(物理下行共享信道)简介

文章目录 PDSCH&#xff08;物理下行共享信道&#xff09;简介1. Transport block CRC attachment2. LDPC base graph selection3. Code block segmentation And Code Block CRC Attachment4. Channel Coding5. Rate Matching6. Code Block Concatenation7. Scrambling8. Modul…

DBC差异比较工具DBCCompare_原理介绍(四)

DBC比对工具UI图片 DBC比对工具&#xff1a;功能详解与源码分析 在现代汽车开发和诊断过程中&#xff0c;DBC&#xff08;Database Container&#xff09;文件扮演着至关重要的角色。它们详细描述了CAN&#xff08;Controller Area Network&#xff09;网络中各消息和信号的详…

JavaScript中的(this)指向问题(如何正确判断this,箭头函数的this是什么)

&#x1f43e;如何正确判断this &#x1f449;我们先运用下面的代码&#xff0c;模拟我们日常生活中常见的三个开发场景&#xff0c;并针对每个场景我们来一 一介绍this的指向 function fun1() {console.log(this.a)}var a 1//场景1fun1()const obj {a: 2,fun1: fun1}//场景…

Arduino UNO R3自学笔记17 之 Arduino为啥要用中断?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习Arduino中断的概念及其功能。 1.什么是中断&#xff1f; 单片机在执行程序时&#xff0c;发生一些其它紧急的事情&#xff0c;单片机将立即暂停当前…