当前位置:   article > 正文

LeetCode 2208. 将数组和减半的最少操作次数

将数组和减半的最少操作次数

题目链接:

力扣icon-default.png?t=M276https://leetcode-cn.com/problems/minimum-operations-to-halve-array-sum/ 

【分析】按照从小到大的顺序排序,每次弹出最大的元素来减半再将减半后的元素插入回去,典型的优先队列的应用。

  1. class Solution {
  2. public int halveArray(int[] nums) {
  3. int ans = 0;
  4. double sum = 0, t = 0, max;
  5. PriorityQueue<Double> queue = new PriorityQueue<>(Comparator.reverseOrder());
  6. int n = nums.length, i;
  7. for(i = 0; i < n; i++){
  8. queue.add((double)nums[i]);
  9. sum += nums[i];
  10. }
  11. sum /= 2;
  12. while(t < sum){
  13. ans++;
  14. max = queue.poll() / 2;
  15. t += max;
  16. queue.add(max);
  17. }
  18. return ans;
  19. }
  20. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/990492
推荐阅读
相关标签
  

闽ICP备14008679号