吃苹果的最大数目
吃苹果的最大数目(medium)
做题过程
一开始想的是用堆,但是问题是维护起来总感觉比较麻烦,就觉得可以用dp,但实际上dp无法解决这类前后耦合度较高的问题。
算法概述
本题要求为给出下标天数长出的苹果数和它们的保质期,每天最多能吃一个苹果,计算最多能吃多少个。需要使用 贪心 每次从 优先队列 中找到保质期最短的先吃、
- 时间复杂度为O(nlogn):排序,遍历剩余苹果渐进收敛于排序
- 空间复杂度为O(n)
JAVA
1 | class Solution { |
总结
题目被分为了两部分:
- 遍历所有产出天数,此时以天数为遍历单位
- 遍历剩余苹果(苹果才是问题核心,而不是天数),这里也是dp无法处理的部分,此时以剩下多少不同天数产出的苹果种类为遍历单位
我做的时候没有理清楚分成两部分的逻辑,想要把所有操作集成在一次循环内,所以会感觉格外复杂,本质上还是缺乏分层的思想。
- Title: 吃苹果的最大数目
- Author: tobegold574
- Created at : 2024-12-24 13:51:01
- Updated at : 2024-12-24 16:30:37
- Link: https://tobegold574.me/2024/12/24/吃苹果的最大数目/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments