Skip to content

Commit 9c018a5

Browse files
committed
✅ [2448] PREFIX SUM!!!
1 parent d7d83e1 commit 9c018a5

File tree

2 files changed

+54
-64
lines changed

2 files changed

+54
-64
lines changed

2448/my_solution.js

+34-45
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

2448/solution.js

+20-19
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,31 @@
44
* @return {number}
55
*/
66
const minCost = (nums, cost) => {
7-
let minCost = Infinity, diffList = [];
7+
let combined = nums.map((value, index) => ({ value, index }));
8+
combined.sort((a, b) => a.value - b.value);
9+
let sortedNums = combined.map(({ value }) => value);
10+
let sortedCost = combined.map(({ index }) => cost[index]);
811

9-
for (let i = 0; i < nums.length; i++) {
10-
let tmpList = [];
11-
for (let j = 0; j < nums.length; j++) {
12-
let curr = nums[i], comp = nums[j]
13-
if (i === j || curr === comp) continue;
14-
tmpList.push((curr > comp) ? curr - comp : comp - curr);
15-
}
16-
diffList.push(tmpList);
12+
let min = 0, prefixCost = Array.from({ length: nums.length }, () => 0);
13+
prefixCost[0] = sortedCost[0];
14+
15+
for (let i = 1; i < sortedNums.length; i++) {
16+
min += (sortedNums[i] - sortedNums[0]) * sortedCost[i];
17+
}
18+
19+
for (let i = 1; i < sortedNums.length; i++) {
20+
prefixCost[i] = prefixCost[i - 1] + sortedCost[i];
1721
}
1822

19-
let idx = 0;
20-
while (0 < diffList.length) {
21-
let curr = diffList.shift(), tmpCostList = [...cost], tmpCostCount = 0;
22-
tmpCostList.splice(idx, 1);
23+
let tmpMin = min;
24+
for (let i = 1; i < sortedNums.length; i++) {
25+
let gap = sortedNums[i] - sortedNums[i - 1];
2326

24-
for (let i = 0; i < curr.length; i++) {
25-
tmpCostCount += curr[i] * tmpCostList[i];
26-
}
27+
tmpMin += prefixCost[i - 1] * gap;
28+
tmpMin -= (prefixCost[nums.length - 1] - prefixCost[i - 1]) * gap;
2729

28-
minCost = Math.min(minCost, tmpCostCount);
29-
idx++;
30+
min = Math.min(min, tmpMin);
3031
}
3132

32-
return minCost;
33+
return min;
3334
};

0 commit comments

Comments
 (0)