Skip to content

Commit d8c3f80

Browse files
authored
Create 1687-delivering-boxes-from-storage-to-ports.js
1 parent 937de85 commit d8c3f80

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {number[][]} boxes
3+
* @param {number} portsCount
4+
* @param {number} maxBoxes
5+
* @param {number} maxWeight
6+
* @return {number}
7+
*/
8+
var boxDelivering = function (boxes, portsCount, maxBoxes, maxWeight) {
9+
const n = boxes.length
10+
const diff = Array(n).fill(0)
11+
for (let i = 0; i < n - 1; i++) {
12+
if (boxes[i][0] != boxes[i + 1][0]) diff[i] = 1
13+
}
14+
const dp = Array(n).fill(0)
15+
let cur = 0
16+
let cbox = 0
17+
let start = 0
18+
for (let i = 0; i < n; i++) {
19+
if (i - start == maxBoxes) {
20+
cur -= boxes[start][1]
21+
cbox -= diff[start]
22+
start += 1
23+
}
24+
cur += boxes[i][1]
25+
if (i > 0) cbox += diff[i - 1]
26+
while (cur > maxWeight) {
27+
cur -= boxes[start][1]
28+
cbox -= diff[start]
29+
start += 1
30+
}
31+
while (start < i && dp[start] == dp[start - 1]) {
32+
cur -= boxes[start][1]
33+
cbox -= diff[start]
34+
start += 1
35+
}
36+
dp[i] = (start == 0 ? 0 : dp[start - 1]) + cbox + 2
37+
}
38+
return dp[n - 1]
39+
}

0 commit comments

Comments
 (0)