将数组和减半的最少操作【贪心2】

本文介绍了一种使用贪心策略和大根堆数据结构解决的问题,即如何在给定整数数组中通过最少的操作次数使所有元素减半。Solution类中的inthalveArray函数展示了如何实现这一过程并提供了一个证明。
摘要由CSDN通过智能技术生成

题目:将数组和减半的最少操作

贪心思路:每次挑选最大的数来减半。

 解法:贪心+大根堆

class Solution {
public:
    int halveArray(vector<int>& nums) {
        priority_queue<double> heap;
        double sum =0.0;
        for(int& x : nums)
        {
            heap.push(x);
            sum += x;
        }
        sum /= 2.0;
        int count = 0;
        while(sum > 0)
        {
            double t = heap.top()/2.0;
            heap.pop();
            sum -= t;
            count++;
            heap.push(t);
        }
        return count;
    }
};

证明

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值