题目描述
样例
apples = [1,2,3,5,2], days = [3,2,1,4,2]
输出
7
这题不难,是真主要没想到这个oj对时间卡的不是很严,光想可能跟区间合并有关了,没想到纯数据结构
这里把当前时间放for里比较巧,但没想到就是不应该,在这记录一下,防止以后再遇到三个约束条件
(C++) $O(nlogn)$
class Solution {
public:
int eatenApples(vector<int>& apples, vector<int>& days) {
multiset<pair<int, int>> st;
int res = 0;
for (int i = 0; i < apples.size() || !st.empty(); i++) {
if (i < apples.size() && apples[i] > 0) {
st.insert(make_pair(i + days[i], apples[i]));
}
while (!st.empty() && (st.begin()->first <= i || st.begin()->second == 0)) {
st.erase(st.begin());
}
if (!st.empty()) {
auto [a, b] = *st.begin();
st.erase(st.begin());
st.insert(make_pair(a, b - 1));
res++;
}
}
return res;
}
};