Minimum Cost to Hire K Workers LeetCode solution in Java

1
class Worker implements Comparable<Worker> {
2
final int q, w;
3

4
public Worker(int q, int w) {
5
this.q = q;
6
this.w = w;
7
}
8

9
@Override
10
public int compareTo(Worker other) {
11
return Integer.compare(w * other.q, q * other.w);
12
}
13
}
14

15
class Solution {
16
public double mincostToHireWorkers(int[] quality, int[] wage, int k) {
17
int n = quality.length;
18
Worker[] a = new Worker[n];
19
for (int i = 0; i < n; ++i) {
20
a[i] = new Worker(quality[i], wage[i]);
21
}
22
Arrays.sort(a);
23
int s = 0;
24
double res = 1e15;
25
PriorityQueue<Integer> q = new PriorityQueue<>();
26
for (Worker worker : a) {
27
q.add(-worker.q);
28
s += worker.q;
29
if (q.size() > k) s += q.poll();
30
if (q.size() == k) res = Math.min(res, (double) s * worker.w / worker.q);
31
}
32
return res;
33
}
34
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0