Minimum Cost to Cut a Stick LeetCode solution in JavaScript

1
var minCost = function (n, cuts) {
2
cuts = cuts.sort((a, b) => a - b);
3
let map = new Map();
4
// Use cutIdx to track the idx of the cut position in the cuts array
5
function dfs(start, end, cutIdx) {
6
let key = `${start}-${end}`;
7
if (map.has(key)) return map.get(key);
8
let min = Infinity;
9
for (let i = cutIdx; i < cuts.length; i++) {
10
let cut = cuts[i];
11
if (cut <= start) continue;
12
if (cut < end) {
13
let len = end - start;
14
let left = dfs(start, cut, 0);
15
let right = dfs(cut, end, i + 1);
16
min = Math.min(min, len + left + right);
17
} else break;
18
}
19
if (min === Infinity) {
20
map.set(key, 0);
21
return 0;
22
} else {
23
map.set(key, min);
24
return min;
25
}
26
}
27
return dfs(0, n, 0);
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0