Skip to content

Commit 7f4a91c

Browse files
authored
Update 1705-maximum-number-of-eaten-apples.js
1 parent 39e338e commit 7f4a91c

File tree

1 file changed

+14
-53
lines changed

1 file changed

+14
-53
lines changed

1705-maximum-number-of-eaten-apples.js

+14-53
Original file line numberDiff line numberDiff line change
@@ -4,64 +4,25 @@
44
* @return {number}
55
*/
66
const eatenApples = function (apples, days) {
7-
let totalDays = 0
8-
if (apples.length === 1) {
9-
if (days[0] > apples[0]) return apples[0]
10-
else return days[0]
11-
}
12-
let i = 0
13-
let applesAvail = 0
14-
for (; i < apples.length; i++) {
15-
if (apples[i] !== 0) {
16-
totalDays++
17-
applesAvail = Math.max(totalDays, i + days[i], applesAvail)
18-
} else {
19-
if (applesAvail > i) totalDays++
7+
const n = apples.length
8+
let fin = 0,
9+
i = 0
10+
const q = new PriorityQueue()
11+
while (i < n || !q.isEmpty()) {
12+
if (i < n && apples[i] > 0) q.push([i + days[i], apples[i]])
13+
while (!q.isEmpty() && (q.peek()[0] <= i || q.peek()[1] === 0)) q.pop()
14+
if (!q.isEmpty()) {
15+
q.peek()[1] -= 1
16+
if(q.peek()[1] <= 0) q.pop()
17+
fin += 1
2018
}
19+
i += 1
2120
}
22-
if (applesAvail > i) return totalDays + (applesAvail - i)
23-
else return totalDays
21+
return fin
2422
}
2523

26-
27-
// another
28-
29-
30-
/**
31-
* @param {number[]} apples
32-
* @param {number[]} days
33-
* @return {number}
34-
*/
35-
const eatenApples = function(apples, days) {
36-
37-
let ans = 0, n = apples.length;
38-
const que = new PriorityQueue();
39-
for (let i = 0; i < n; i++) {
40-
while (!que.isEmpty() && que.peek().exp <= i) que.pop();
41-
if (que.isEmpty()) {
42-
if (apples[i] == 0 && days[i] == 0) continue;
43-
}
44-
que.push({cnt: apples[i], exp: i + days[i]});
45-
ans++;
46-
let temp = que.peek();
47-
que.pop();
48-
if (--temp.cnt) que.push(temp);
49-
}
50-
let day = n;
51-
while (!que.isEmpty()) {
52-
while (!que.isEmpty() && que.peek().exp <= n) que.pop();
53-
if (que.isEmpty()) break;
54-
ans++;
55-
n++;
56-
let temp = que.peek();
57-
que.pop();
58-
if (--temp.cnt) que.push(temp);
59-
}
60-
return ans;
61-
};
62-
6324
class PriorityQueue {
64-
constructor(comparator = (a, b) => a.exp < b.exp) {
25+
constructor(comparator = (a, b) => a[0] < b[0]) {
6526
this.heap = []
6627
this.top = 0
6728
this.comparator = comparator

0 commit comments

Comments
 (0)