leetcode--983.最低票价

在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。

火车票有三种不同的销售方式:

一张为期一天的通行证售价为 costs[0] 美元;
一张为期七天的通行证售价为 costs[1] 美元;
一张为期三十天的通行证售价为 costs[2] 美元。
通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张为期 7 天的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。

返回你想要完成在给定的列表 days 中列出的每一天的旅行所需要的最低消费。

 

示例 1:

输入:days = [1,4,6,7,8,20], costs = [2,7,15]
输出:11
解释: 
例如,这里有一种购买通行证的方法,可以让你完成你的旅行计划:
在第 1 天,你花了 costs[0] = $2 买了一张为期 1 天的通行证,它将在第 1 天生效。
在第 3 天,你花了 costs[1] = $7 买了一张为期 7 天的通行证,它将在第 3, 4, ..., 9 天生效。
在第 20 天,你花了 costs[0] = $2 买了一张为期 1 天的通行证,它将在第 20 天生效。
你总共花了 $11,并完成了你计划的每一天旅行。
示例 2:

输入:days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]
输出:17
解释:
例如,这里有一种购买通行证的方法,可以让你完成你的旅行计划: 
在第 1 天,你花了 costs[2] = $15 买了一张为期 30 天的通行证,它将在第 1, 2, ..., 30 天生效。
在第 31 天,你花了 costs[0] = $2 买了一张为期 1 天的通行证,它将在第 31 天生效。 
你总共花了 $17,并完成了你计划的每一天旅行。
 

提示:

1 <= days.length <= 365
1 <= days[i] <= 365
days 按顺序严格递增
costs.length == 3
1 <= costs[i] <= 1000

思路:动态规划

dp[i] = Math.min(Math.min(dp[Math.max(0,i-1)]+costs[0],dp[Math.max(0,i-7)]+costs[1])

                ,dp[Math.max(0,i-30)]+costs[2]);

 

代码:

class Solution {

    public int mincostTickets(int[] days, int[] costs) {

       int dp[] = new int[366];

            if(days.length==0){

                return 0;

            }

            dp[0] = 0;

            int index=0;

            for(int i=1;i<=365;i++){

                if(index==days.length){

                    break;

                }

                if(days[index]!=i){  //如果这天不旅行,那花费和前一天一样

                    dp[i] = dp[i-1];

                    continue;

                }

                index++;

                dp[i] = Math.min(Math.min(dp[Math.max(0,i-1)]+costs[0],dp[Math.max(0,i-7)]+costs[1])

                ,dp[Math.max(0,i-30)]+costs[2]);

            }

            return dp[days[days.length-1]];

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485005.shtml

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

相关文章

陈天桥雒芊芊脑机接口中心等团队研究登顶刊:超声波“读心”

来源&#xff1a;澎湃新闻 作者&#xff1a;贺梨萍 脑机接口&#xff08;BMIs&#xff09;在全球的研究正如火如荼&#xff0c;神经科学家们希望通过这样一种设备将神经活动映射到相应的行为&#xff0c;它以读取和解释大脑活动&#xff0c;并向计算机或机器发送指令。实际上&a…

软工 课堂作业:选出一个整数组中最大子数组

项目计划日志 10.6 看ppt&#xff0c;熟悉内容。 10.6下午&#xff0c;开始编程调试。 10.7 运行调试&#xff0c;写博客。 时间记录日志日期开始时间结束时间中断时间净时间活动10.69:0011:0020min1.5h查资料10.78:0012:0030min3.5h查资料&#xff0c;编程10.71…

图灵奖得主 Yann LeCun 最新文章 :自监督学习,人工智能世界的“暗物质”

来源&#xff1a;AI前线作者&#xff1a;Yann LeCun &#xff0c;Ishan Misra译者&#xff1a;王强策划&#xff1a;刘燕近年来&#xff0c;AI 产业在开发“可以从大量经过细致标记的数据中学习的 AI 系统”这个研究领域上取得了巨大进步。这种监督学习的范式在训练专业模型方面…

Leetoce--572. 另一个树的子树(java)

给定两个非空二叉树 s 和 t&#xff0c;检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t&#xff1a; 4 / \ 1…

Linux 安装Python37

1、下载python3.7.0 https://www.python.org/downloads/release/python-370/ 2、创建Linux的python37目录 mkdir /usr/local/python37 3、解压python3.7.0源码 tar zxvf python3.7.0.tar.zg 4、配置编译参数 ./configure --prefix/usr/local/python37 5、make 6、make install …

无脑人:我们真的需要大脑吗?

© Mental Floss来源&#xff1a;神经科技编辑&#xff1a;Yezi审阅&#xff1a;mingzlee7在一次讨论中&#xff0c;有位德高望重的人&#xff08;我不会透露这个人是谁&#xff09;告诉我&#xff1a;“我认为自我存在于心脏&#xff01;而不是大脑&#xff01;那些声称意…

get和post的联系与区别

get和post是什么&#xff1f;HTTP协议中的两种发送请求的方法。 那么他们有什么区别呢&#xff1f; 在web开发时&#xff0c;我们可以很直观的看到他们的区别&#xff1a; 1.get将参数放入URL中&#xff0c;而post则通过request body传递参数 2.get比post更不安全&#xff…

JS数组的需要注意的问题

一、在js中数组是我们经常使用的数据类型&#xff0c;也为我们提供了很多方法。但是有些方法需要注意使用&#xff1a; 1、indexOf(args)&#xff1a;匹配一个数组中与args相等的项的索引位置&#xff0c;如果该数组包含这个匹配项则返回第一个匹配的索引&#xff0c;并停止匹配…

基金委最新改革:9大科学部整合为4个板块资助布局

来源&#xff1a;微信公众号科学网&#xff08;sciencenet-cas&#xff09;3月24日&#xff0c;国家自然科学基金委员会&#xff08;以下简称自然科学基金委&#xff09;第八届委员会第四次全体会议在北京召开。会议上&#xff0c;自然科学基金委主任、党组书记李静海作全委会工…

Leetcode--236. 二叉树的最近公共祖先(Java)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自己的…

万恶之源 - Python运算符与编码

格式化输出 现在有个需要我们录入我们身边好友的信息,格式如下: ------------ info of Alex Li ----------Name : Alex LiAge : 22job : Teacher Hobbie: girl------------- end ---------------- 我们现在能想到的办法就是用一下方法: name input(请输入姓名:) age …

Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; 3 / \ 9 20 / \ 15 7 代码&#xff1a; /**…

世界最大、最复杂的GPU!这颗集成1000亿个晶体管的芯片长什么样?

来源&#xff1a;EETOP3月25日消息 英特尔于昨日举办了直播活动&#xff0c;新上任的 CEO 帕特基辛格&#xff08;Pat Gelsinger&#xff09; 发表了演讲&#xff0c;并展示了采用 7nm 工艺的 Xe-HPC 高性能 GPU&#xff0c;代号 “Ponte Vecchio”。这款产品封装了 47 个芯片&…

携带cookie进行数据请求

前端进行数据请求有&#xff1a;普通的ajax(json)请求&#xff0c;jsop跨域请求&#xff0c;cors跨域请求&#xff0c;fetch请求...PC端这些请求方式中&#xff0c;普通的ajax(json)请求和jsop跨域请求是默认携带cookie的&#xff0c;而cors跨域请求和fetch请求默认是不携带coo…

Leetcode--145. 二叉树的后序遍历(迭代递归)

给定一个二叉树&#xff0c;返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 代码&#xff1a; 迭代&#xff1a; 从根节点开始依次迭代&#xff0c;弹出栈顶元素输出到输出列表中&#xff0c;然后依次压入它的所有孩子节…

Lucene全文检索

目录结构: 1.全文检索 2.Lucene入门 3.Lucene进阶 全文检索 一, 生活中的搜索: 1.Windows系统中的有搜索功能&#xff1a;打开“我的电脑”&#xff0c;按“F3”就可以使用查找的功能&#xff0c;查找指定的文件或文件夹。搜索的范围是整个电脑中的文件资源。 2.Eclipse中的帮助…

区块链架构下 智慧城市发展加速

来源&#xff1a;中国经济时报智慧城市与区块链技术结合愈加紧密在城市建设和管理上&#xff0c;越来越多的城市开始尝试推动区块链技术在智慧城市项目中应用。中国有杭州聚能城、雄安新区;韩国有“区块链首尔城”;瑞士有“加密谷”楚格;爱沙尼亚和圣马力诺等国家也在纷纷构筑自…

Leetcode--94. 二叉树的中序遍历(迭代递归)

给定一个二叉树&#xff0c;返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 代码&#xff1a; 迭代&#xff1a; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;…

HDU-1003 Max Sum(动态规划)

题目回顾&#xff08;HDU-1003&#xff09;&#xff1a; Max Sum Problem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 (-1) 5 …

揭秘人工智能背后鲜为人知的人工力量——数据标注

来源&#xff1a;帮尼资讯部分参考来源&#xff1a;大数据文摘、点宽DigQuant图片来源&#xff1a;网络尽管随着AI的普及&#xff0c;我们在生活中越来越依赖于人工智能&#xff0c;但“人工智障”的相关调侃也从来没有消失过。相信大家都知道&#xff0c;如果我们想要让AI准确…