leetcode 983. Minimum Cost For Tickets | 983. 最低票价(动态规划)
题目
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. 最低票价(动态规划)相关推荐
- [Leedcode][JAVA][第983题][最低票价][动态规划]
[问题描述][第983题][最低票价][中等] 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出.每一项是一个从 1 到 ...
- 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 ...
- leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)
题目 题解 所有的 chips,要么在奇数位置,要么在偶数位置 class Solution {public int minCostToMoveChips(int[] position) {int p ...
- 【DP】LeetCode 64. Minimum Path Sum
LeetCode 64. Minimum Path Sum Solution1:标准的动态规划题目 class Solution { public:int minPathSum(vector<v ...
- leetcode - 983. 最低票价
983. 最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出.每一项是一个从 1 到 365 的整数. 火车票有三 ...
- [Swift]LeetCode1135. 最低成本联通所有城市 | Connecting Cities With Minimum Cost
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 【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 ...
- LeetCode 746. Min Cost Climbing Stairs--动态规划--Java,C++,Python解法
题目地址:Min Cost Climbing Stairs - LeetCode LeetCode 动态规划(Dynamic programming)系列题目:LeetCode 动态规划(Dynami ...
- POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)
题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...
最新文章
- 规范性分析是不是产生最优业务成果的处方?
- Resilience4j-轻量级熔断框架
- OpenCV感兴趣区域Region of interest的实例(附完整代码)
- 手机是如何实现自动对焦的?
- IDEA——修改idea64.exe.vmoptions文件解决coding卡顿问题
- 关于get请求的乱码问题
- [导入]Nhibernate学习 资料
- 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)
- ModelSim 2019安装教程
- Elasticsearch常用搜索和分词器
- Echarts示例大全 Demo合集网站
- qt 子线程(多线程)更新gui的几种方法
- JS中的对象和方法简单剖析
- 重新认识java(五) ---- 面向对象之多态(向上转型与向下转型)
- python 的基础 学习第十天函数的初始
- NeHe_001_创建一个OpenGL窗口
- javascript:验证是否是真实有效的身份证号码函数
- 华为android系统是什么意思,华为HarmonyOS与安卓系统有什么区别?一文了解
- 想分享给各位的故事【如果你想成为很厉害很厉害的人】
- python应用——习题练习
热门文章
- HYSBZ - 1503 郁闷的出纳员(Splay)
- HDU - 1394 Minimum Inversion Number(树状数组)
- 如何把荣耀手机的计算机移动到桌面,华为荣耀怎么把天气预报设置到桌面
- access 打印预览 代码_标签打印软件如何批量打印样品标签
- 深度学习项目-人群密度估计
- 机器学习-集成之随机森林算法原理及实战
- 一个DDOS病毒的分析(一)
- cocos2d-x游戏实例(3)-获得地图索引
- Linux网络编程 | 高性能定时器 :时间轮、时间堆
- python爬虫 爬取bilibili新番榜