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