题目

https://leetcode.com/problems/minimum-cost-for-tickets/

题解

没想出来,看了官方题解,难点在于如何列出 dp 的状态转移方程。我没想到它的子问题是可以以这种“贪心”的方式求解的。

class Solution {public int mincostTickets(int[] days, int[] costs) {HashSet<Integer> daySet = new HashSet<>();for (int day : days) {daySet.add(day);}int lastDay = days[days.length - 1];int[] dp = new int[365 + 30 + 1]; // 扩充30天且默认值为0,可以省掉+1,+7,+30的越界判断dp[lastDay] = Math.min(costs[0], Math.min(costs[1], costs[2]));for (int i = lastDay - 1; i >= 0; i--) {if (daySet.contains(i)) {dp[i] = min(dp[i + 1] + costs[0], dp[i + 7] + costs[1], dp[i + 30] + costs[2]);} else {dp[i] = dp[i + 1];}}return dp[1];}public int min(int a, int b, int c) {return Math.min(a, Math.min(b, c));}
}

leetcode 983. Minimum Cost For Tickets | 983. 最低票价(动态规划)相关推荐

  1. [Leedcode][JAVA][第983题][最低票价][动态规划]

    [问题描述][第983题][最低票价][中等] 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出.每一项是一个从 1 到 ...

  2. Leetcode 1217. Minimum Cost to Move Chips to The Same Position [Python]

    题目好难理解,看了各位大神们的解释才懂了要求做什么.比如说[2,2,2,3,3] 的意思是[index == 2的位置上有一个chip,index == 2的位置上有一个chip,index == 2 ...

  3. leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)

    题目 题解 所有的 chips,要么在奇数位置,要么在偶数位置 class Solution {public int minCostToMoveChips(int[] position) {int p ...

  4. 【DP】LeetCode 64. Minimum Path Sum

    LeetCode 64. Minimum Path Sum Solution1:标准的动态规划题目 class Solution { public:int minPathSum(vector<v ...

  5. leetcode - 983. 最低票价

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

  6. [Swift]LeetCode1135. 最低成本联通所有城市 | Connecting Cities With Minimum Cost

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  7. 【LeetCode 1000】 Minimum Cost to Merge Stones

    题目描述 There are N piles of stones arranged in a row. The i-th pile has stones[i] stones. A move consi ...

  8. LeetCode 746. Min Cost Climbing Stairs--动态规划--Java,C++,Python解法

    题目地址:Min Cost Climbing Stairs - LeetCode LeetCode 动态规划(Dynamic programming)系列题目:LeetCode 动态规划(Dynami ...

  9. POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)

    题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...

最新文章

  1. 规范性分析是不是产生最优业务成果的处方?
  2. Resilience4j-轻量级熔断框架
  3. OpenCV感兴趣区域Region of interest的实例(附完整代码)
  4. 手机是如何实现自动对焦的?
  5. IDEA——修改idea64.exe.vmoptions文件解决coding卡顿问题
  6. 关于get请求的乱码问题
  7. [导入]Nhibernate学习 资料
  8. 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)
  9. ModelSim 2019安装教程
  10. Elasticsearch常用搜索和分词器
  11. Echarts示例大全 Demo合集网站
  12. qt 子线程(多线程)更新gui的几种方法
  13. JS中的对象和方法简单剖析
  14. 重新认识java(五) ---- 面向对象之多态(向上转型与向下转型)
  15. python 的基础 学习第十天函数的初始
  16. NeHe_001_创建一个OpenGL窗口
  17. javascript:验证是否是真实有效的身份证号码函数
  18. 华为android系统是什么意思,华为HarmonyOS与安卓系统有什么区别?一文了解
  19. 想分享给各位的故事【如果你想成为很厉害很厉害的人】
  20. python应用——习题练习

热门文章

  1. HYSBZ - 1503 郁闷的出纳员(Splay)
  2. HDU - 1394 Minimum Inversion Number(树状数组)
  3. 如何把荣耀手机的计算机移动到桌面,华为荣耀怎么把天气预报设置到桌面
  4. access 打印预览 代码_标签打印软件如何批量打印样品标签
  5. 深度学习项目-人群密度估计
  6. 机器学习-集成之随机森林算法原理及实战
  7. 一个DDOS病毒的分析(一)
  8. cocos2d-x游戏实例(3)-获得地图索引
  9. Linux网络编程 | 高性能定时器 :时间轮、时间堆
  10. python爬虫 爬取bilibili新番榜