【贪心算法】将数组和减半的最小操作数

1.题目解析

2208. 将数组和减半的最少操作次数 - 力扣(LeetCode)

2.讲解算法原理

使用当前数组中最大的数将它减半,,直到数组和减小到一半为止,从而快速达到目的

重点是找到最大数,可以采用大根堆快速达到目的

3.代码

java 复制代码
class Solution {
    public int halveArray(int[] nums) {
        PriorityQueue<Double> heap=new PriorityQueue<>((a,b)->b.compareTo(a));//创建大根堆
        double sum=0;
        for(int x:nums){
            heap.offer((double)x);
            sum+=x;
        }
        int count=0;
        sum/=2.0;
        while(sum>0){
            double tmp=heap.poll()/2.0;
            sum-=tmp;
            count++;
            heap.offer(tmp);
        }
        return count;
    }
}

4.证明

证明方法:交换论证法

相关推荐
*TQK*39 分钟前
双指针算法介绍+算法练习(2025)
c++·学习·算法·双指针
陈果然DeepVersion41 分钟前
算法奈我何(二)冒泡排序
算法
郭涤生1 小时前
并行算法_第十章_《C++并发编程实战》笔记
c++·算法·并发编程
SomeB1oody1 小时前
【Python机器学习】2.2. 聚类分析算法理论:K均值聚类(KMeans Analysis)、KNN(K近邻分类)、均值漂移聚类(MeanShift)
python·算法·机器学习·聚类·分类算法
Cindy辛蒂1 小时前
C语言:计算并输出三个整数的最大值 并对三个数排序
c语言·数据结构·算法
AI技术控1 小时前
计算机视觉算法实战——驾驶员玩手机检测(主页有源码)
算法·计算机视觉·智能手机
小竹子141 小时前
L2-4 吉利矩阵
算法·矩阵·深度优先
AndrewHZ1 小时前
DeepSeek模型本地化部署方案及Python实现
人工智能·深度学习·算法·语言模型·ai助理·deepseek·本地化部署
CodeSheep2 小时前
稚晖君正式官宣了,yyds!!
人工智能·算法·程序员
乌云暮年2 小时前
算法刷题整理合集(一)
java·开发语言·算法·蓝桥杯·模拟