大家好,我是你们的晴天学长,今天的算法题思想是贪心,数据结构用到了优先队列,API用的是Java自带的PriorityQueue,其本质就是一个二叉堆,一个由数组构成的二叉堆,可以实现大顶堆和小顶堆的操作,还是非常重要的,需要的小伙伴请自取哦!💪💪💪
1 ).执行 K 次操作后的最大分数
2 ) . 代码示例
class Solution {
public long maxKelements(int[] nums, int k) {
PriorityQueue<Integer> pq = new PriorityQueue<>((o1, o2) -> (o2 - o1));//lambda表达式实现
for (int num : nums) {
pq.offer(num);
}
long sum = 0;
while (k-- > 0) {
int max = pq.poll();
sum += max;
pq.offer((max + 2) / 3);//像上取整
}
return sum;
}
}
3 ) . 总结
- 优先队列的概念要掌握。
- 堆有大顶堆和小顶堆,分别怎么实现的要了解。
- 像上取整的基本实现。