贪心
方法一贪心
很直观的贪心问题,每一次抉择我们需要选取当前可以做的利润最大的项目。
参考代码
class Solution {public int findMaximizedCapital(int k, int w, int[] profits, int[] capital) {// 资本PriorityQueue<Integer> capitalQueue = new PriorityQueue<>((o1,o2)->capital[o1] - capital[o2] );// 利润PriorityQueue<Integer> profitsQueue = new PriorityQueue<>((o1,o2)->profits[o2] - profits[o1]);for(int i=0;i<capital.length;i++){capitalQueue.add(i);}for(int i=0;i<k;i++){while(!capitalQueue.isEmpty() && capital[capitalQueue.peek()] <= w){profitsQueue.add(capitalQueue.poll());}if(profitsQueue.isEmpty()){break;}w += profits[profitsQueue.poll()];}return w;}}
复杂度分析
时间复杂度O((n+k)logn)
空间复杂度O(n)
