package dataClass.code03;import java.util.PriorityQueue;publicclassLessMoneySplitGold{publicstaticintlessMoney(int[] arr){
PriorityQueue<Integer> pQ =newPriorityQueue<>();for(int i =0; i < arr.length; i++){
pQ.add(arr[i]);}int sum =0;int cur =0;while(pQ.size()>1){
cur = pQ.poll()+ pQ.poll();
sum += cur;
pQ.add(cur);}return sum;}}
4)项目资金问题
package dataClass.code03;import java.util.Comparator;import java.util.PriorityQueue;publicclassIPO{publicstaticclassProgram{publicint p;publicint c;publicProgram(int p,int c){this.p = p;this.c = c;}}publicstaticintfindMaximizedCapital(int k,int w,int[] Profits,int[] Capital){
PriorityQueue<Program> minCostQ =newPriorityQueue<>(newMinCostComparator());
PriorityQueue<Program> maxProfitQ =newPriorityQueue<>(newMaxProfitComparator());for(int i =0; i < Profits.length; i++){
minCostQ.add(newProgram(Profits[i], Capital[i]));}for(int i =0; i < k; i++){while(!minCostQ.isEmpty()&& minCostQ.peek().c <= w){
maxProfitQ.add(newProgram(Profits[i], Capital[i]));}if(maxProfitQ.isEmpty()){return w;}
w += maxProfitQ.poll().p;}return w;}//根据花费组织的小根堆比较器publicstaticclassMinCostComparatorimplementsComparator<Program>{@Overridepublicintcompare(Program o1, Program o2){return o1.c - o2.c;}}//根据利润组织的大根堆比较器publicstaticclassMaxProfitComparatorimplementsComparator<Program>{@Overridepublicintcompare(Program o1, Program o2){return o2.p - o1.p;}}}
贪心算法求解标准过程解题套路套路实战1) 会议时间package dataClass.code03;import java.util.Arrays;import java.util.Comparator;public class BestArrange { public static class Program { public int start; public int end; public Program(int