博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 983. Minimum Cost For Tickets
阅读量:4622 次
发布时间:2019-06-09

本文共 3340 字,大约阅读时间需要 11 分钟。

原题链接在这里:

题目:

In a country popular for train travel, you have planned some train travelling one year in advance.  The days of the year that you will travel is given as an array days.  Each day is an integer from 1 to 365.

Train tickets are sold in 3 different ways:

  • a 1-day pass is sold for costs[0] dollars;
  • a 7-day pass is sold for costs[1] dollars;
  • a 30-day pass is sold for costs[2] dollars.

The passes allow that many days of consecutive travel.  For example, if we get a 7-day pass on day 2, then we can travel for 7 days: day 2, 3, 4, 5, 6, 7, and 8.

Return the minimum number of dollars you need to travel every day in the given list of days.

 

Example 1:

Input: days = [1,4,6,7,8,20], costs = [2,7,15]Output: 11Explanation: For example, here is one way to buy passes that lets you travel your travel plan:On day 1, you bought a 1-day pass for costs[0] = $2, which covered day 1.On day 3, you bought a 7-day pass for costs[1] = $7, which covered days 3, 4, ..., 9.On day 20, you bought a 1-day pass for costs[0] = $2, which covered day 20.In total you spent $11 and covered all the days of your travel.

Example 2:

Input: days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]Output: 17Explanation: For example, here is one way to buy passes that lets you travel your travel plan:On day 1, you bought a 30-day pass for costs[2] = $15 which covered days 1, 2, ..., 30.On day 31, you bought a 1-day pass for costs[0] = $2 which covered day 31.In total you spent $17 and covered all the days of your travel.

Note:

  1. 1 <= days.length <= 365
  2. 1 <= days[i] <= 365
  3. days is in strictly increasing order.
  4. costs.length == 3
  5. 1 <= costs[i] <= 1000

题解:

For all the days when travel is not needed, its min cost should be the same as previous day.

When it comes to the day travel is needed, there are 3 options, 1 day pass + up to previous day minimum cost, 7 days pass + up to previous 7 days minimum cost, 30 days pass + up to previous 30 days minimum cost.

Time Complexity: O(n). n = days[days.length-1].

Space: O(n).

AC Java:

1 class Solution { 2     public int mincostTickets(int[] days, int[] costs) { 3         int lastDay = days[days.length-1]; 4         int [] dp = new int[lastDay+1]; 5         int ind = 0; 6         for(int i = days[0]; i<=lastDay; i++){ 7             if(i != days[ind]){ 8                 dp[i] = dp[i-1]; 9             }else{10                 dp[i] = Math.min(dp[i-1]+costs[0], Math.min(dp[Math.max(0, i-7)]+costs[1], dp[Math.max(0, i-30)]+costs[2]));11                 ind++;12             }13         }14         15         return dp[lastDay];16     }17 }

The truth is we only need to maintain last 30s data.

Thus it couls limit dp array to 30 days.

Time Complexity: O(n).

Space: O(1).

AC Java:

1 class Solution { 2     public int mincostTickets(int[] days, int[] costs) { 3         int [] dp = new int[30]; 4         int ind = 0; 5         for(int i = days[0]; i<=days[days.length-1]; i++){ 6             if(i != days[ind]){ 7                 dp[i%30] = dp[(i-1)%30]; 8             }else{ 9                 dp[i%30] = Math.min(dp[(i-1)%30] + costs[0], Math.min(dp[Math.max(0, i-7) % 30] + costs[1], dp[Math.max(0, i-30) % 30] + costs[2]));10                 ind++;11             }12         }13         14         return dp[days[days.length-1]%30];15     }16 }

类似.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/11444453.html

你可能感兴趣的文章
CVPR2013-papers
查看>>
Javascript中定义方法的另类写法(批量定义Javascript对象的方法)
查看>>
正则表达式9-分组搜索
查看>>
java class文件结构
查看>>
正确设置-Dfile.encoding参数
查看>>
luvcview,使用mplayer查看摄像头和luvcview保存YUV图像视频的播放(转)
查看>>
CSS3总结(干货)
查看>>
兼容获取scrollTop和scrollLeft(被滚动条卷走的部分)
查看>>
Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)...
查看>>
wordpress如何利用插件添加优酷土豆等视频到自己的博客上
查看>>
sql命令
查看>>
十五的学习日记20160928-扑克牌/目标/Apache外网访问
查看>>
php 1小时入门(一)
查看>>
H5 _拖放使用
查看>>
hdu 5646 拆数积最大 数学
查看>>
20189307《网络攻防》第九周作业
查看>>
hdu4607树的直径,spfa
查看>>
poj2926Requirements (曼哈顿距离)
查看>>
Windows Server 2008 R2 到Windows 7的改造之路
查看>>
切图全在
查看>>