思路
代码实现
class Solution {
public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {
PriorityQueue<Program> minCostQ = new PriorityQueue<>((Program p1, Program p2) -> p1.c - p2.c);
PriorityQueue<Program> maxProfitQ = new PriorityQueue<>((Program p1, Program p2) -> p2.p - p1.p);
for(int i = 0; i < capital.length; i++) {
minCostQ.add(new Program(profits[i], capital[i]));
}
for(int i = 0; i < k; i++) {
while(!minCostQ.isEmpty() && w >= minCostQ.peek().c) {
maxProfitQ.add(minCostQ.poll());
}
if(maxProfitQ.isEmpty()) return w;
w += maxProfitQ.poll().p;
}
return w;
}
public class Program {
public int p;
public int c;
public Program(int p, int c) {
this.p = p;
this.c = c;
}
}
}