赞
踩
题目链接:
力扣https://leetcode-cn.com/problems/minimum-operations-to-halve-array-sum/
【分析】按照从小到大的顺序排序,每次弹出最大的元素来减半再将减半后的元素插入回去,典型的优先队列的应用。
- class Solution {
- public int halveArray(int[] nums) {
- int ans = 0;
- double sum = 0, t = 0, max;
- PriorityQueue<Double> queue = new PriorityQueue<>(Comparator.reverseOrder());
- int n = nums.length, i;
- for(i = 0; i < n; i++){
- queue.add((double)nums[i]);
- sum += nums[i];
- }
- sum /= 2;
- while(t < sum){
- ans++;
- max = queue.poll() / 2;
- t += max;
- queue.add(max);
- }
- return ans;
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。