Skip to content

Commit 9cfa836

Browse files
authored
Update 857-minimum-cost-to-hire-k-workers.js
1 parent b3563b1 commit 9cfa836

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

857-minimum-cost-to-hire-k-workers.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,34 @@ function insert(arr, el) {
6161
}
6262
arr.push(el)
6363
}
64+
65+
// another
66+
67+
/**
68+
* @param {number[]} quality
69+
* @param {number[]} wage
70+
* @param {number} K
71+
* @return {number}
72+
*/
73+
const mincostToHireWorkers = function(quality, wage, K) {
74+
const workers = [], n = wage.length
75+
for(let i = 0; i < n; i++) {
76+
workers.push([wage[i] / quality[i], quality[i]])
77+
}
78+
workers.sort((a, b) => a[0] - b[0])
79+
const pq = new MaxPriorityQueue({ priority: (w) => w.quality })
80+
let res = Infinity, qualitySum = 0
81+
for(const worker of workers) {
82+
const [ratio, quality] = worker
83+
qualitySum += quality
84+
pq.enqueue({ quality })
85+
86+
if(pq.size() > K) {
87+
qualitySum -= pq.dequeue().element.quality
88+
}
89+
if(pq.size() === K) res = Math.min(res, qualitySum * ratio)
90+
}
91+
92+
return res
93+
};
94+

0 commit comments

Comments
 (0)