解题思路:将capital数组和profits数组融合成为一个结构体Node,先按照capital进行从小到大排序,如果capital大小一致则按照profits从大到小进行排序。创建一个大顶堆,按照profits进行排序,通过一个while循环不停将Node加入到大顶堆中去,每次取最大的元素进行相加,最后得到结果。
代码:
class Solution {
private class Node{
int x;
int y;
public Node(int x, int y){
this.x = x;
this.y = y;
}
}
public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {
int len = profits.length;
Node[] pc = new Node[len];
for(int i=0;i<len;i++){
pc[i] = new Node(profits[i], capital[i]);
}
//按照capital从小到大排序,相等则按照profits从大到小排序