这道题的启示是:对于有联系的多个数组,我们可以自己构造一个数据结构,把它们联合起来
package com.example.demo;
import java.util.Comparator;
import java.util.PriorityQueue;
public class test1 {
//自己构建一个数据结构来装cost和profit的对应数据
public static class Node{
public int p;
public int c;
public Node(int p,int c){
this.p = p;
this.c = c;
}
}
//把cost数组加到小根堆中,将小根堆中c小于手中的钱数出堆,放入到大根堆中,大根堆根据profit来排序,大根堆出堆即为第一个要做
//的项目,加上利润,即为手里的新资金,去小根堆里找新符合的项目加到大根堆,重复以上步骤。最后,按K、或者大根堆为空来结束。
public static int test(int costs[],int profits[],int k,int m) {
PriorityQueue<Node> cost = new PriorityQueue<>(new Minheap());
PriorityQueue<Node> profit = new Priori