ipo
使用两个heap解决
class Solution {
public static class Node{
public int p;
public int c;
public Node(int p,int c){
this.p = p;
this.c = c;
}
}
public static class MinCostComparator implements Comparator<Node>{
public int compare(Node n1,Node n2){
return n1.c - n2.c;
}
}
public static class MaxProComparator implements Comparator<Node>{
public int compare(Node n1,Node n2){
return n2.p - n1.p;
}
}
public int findMaximizedCapital(int k, int W, int[] Profits, int[] Capital) {
Node[] nodes = new Node[Profits.length];
for(int i = 0;i < Profits.length;i++){
nodes[i] = new Node(Profits[i],Capital[i]);
}
PriorityQueue<Node> minCost = new PriorityQueue<>(new MinCostComparator());
PriorityQueue<Node> maxPro = new PriorityQueue<>(new MaxProComparator());
for(int i = 0;i < nodes.length;i++){
minCost.add(nodes[i]);
}
for(int i = 0;i < k;i++){
while(!minCost.isEmpty() && minCost.peek().c <= W){
maxPro.add(minCost.poll());
}
if(maxPro.isEmpty()){
return W;
}
W += maxPro.poll().p;
}
return W;
}
}
``