本文主要是介绍LeetCode 2208. 将数组和减半的最少操作次数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:
力扣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;}
}
这篇关于LeetCode 2208. 将数组和减半的最少操作次数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!