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

news/2024/10/23 9:38:06/

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

给你一个正整数数组 nums 。每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。(注意,在后续操作中你可以对减半过的数继续执行操作)

请你返回将 nums 数组和 至少 减少一半的 最少 操作数。

示例 1:

输入:nums = [5,19,8,1]
输出:3
解释:初始 nums 的和为 5 + 19 + 8 + 1 = 33 。
以下是将数组和减少至少一半的一种方法:
选择数字 19 并减小为 9.5 。
选择数字 9.5 并减小为 4.75 。
选择数字 8 并减小为 4 。
最终数组为 [5, 4.75, 4, 1] ,和为 5 + 4.75 + 4 + 1 = 14.75 。
nums 的和减小了 33 - 14.75 = 18.25 ,减小的部分超过了初始数组和的一半,18.25 >= 33/2 = 16.5 。
我们需要 3 个操作实现题目要求,所以返回 3 。
可以证明,无法通过少于 3 个操作使数组和减少至少一半。

示例 2:

输入:nums = [3,8,20]
输出:3
解释:初始 nums 的和为 3 + 8 + 20 = 31 。
以下是将数组和减少至少一半的一种方法:
选择数字 20 并减小为 10 。
选择数字 10 并减小为 5 。
选择数字 3 并减小为 1.5 。
最终数组为 [1.5, 8, 5] ,和为 1.5 + 8 + 5 = 14.5 。
nums 的和减小了 31 - 14.5 = 16.5 ,减小的部分超过了初始数组和的一半, 16.5 >= 31/2 = 15.5 。
我们需要 3 个操作实现题目要求,所以返回 3 。
可以证明,无法通过少于 3 个操作使数组和减少至少一半。

提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 107
  • class Solution {
    public:int halveArray(vector<int>& nums) {int n=nums.size();double sum=0,sum2=0.0;sort(nums.begin(),nums.end());for(int i=0;i<n;i++){sum+=nums[i];}priority_queue<double>pq(nums.begin(),nums.end());int m=0;while(sum2<sum/2){double x=pq.top();pq.pop();sum2+=x/2;pq.push(x/2);m++;}return m;}
    };


http://www.ppmy.cn/news/1015502.html

相关文章

第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先&#xff0c;来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后&#xff0c;集群某个节点将回复该数据包&#xff0c;并将该数据包…

05 并发编程挑战,上下文切换问题,死锁问题,受限于硬件和软件的资源问题

JAVA多线程 并发编程上下文切换如何减少上下文切换减少上下文切换实战 死锁资源限制的挑战什么是资源限制资源限制引发的问题如何解决资源限制的问题在资源限制情况下进行并发编程 并发编程 有的并发程序写得不严谨&#xff0c;在并发下如果出现问题&#xff0c;定位起来会比较…

java的junit之异常测试、参数化测试、超时测试

1.对可能抛出的异常进行测试 异常本身是方法签名的一部分测试错误的输入是否导致特定的异常 summary 测试异常可以使用Test(expectedExceptio.class)对可能发生的每种类型的异常进行测试 2.参数化测试 如果待测试的输入和输出是一组数据&#xff1a; 可以把测试数据组织起…

Python数据类型相关问题

问题1:Python的基本数据类型 问题2:Python的可变数据类型和不可变数据类型 问题3:列表(list)和元组(tuple)的区别 问题4:集合(set)是怎样的一种数据类型,何时使用? 问题5:Python如何实现tuple和list的转换? 问题6:Python中基本数据结构的操作 问题7:列举字符串…

vue 路由页面跳转

从index.vue跳转到data.vue index.vue <el-table-column label"客户数" align"center" :show-overflow-tooltip"true"><template slot-scope"scope"><router-link :to"/system/enterprise-data/index/ scope.ro…

Mysql8.0变更特性

性能翻倍 账户与安全 用户的创建和授权 在MySQL之前的版本&#xff0c;创建用户和给创建的用户授权可以一条语句执行完成&#xff1a; grant all privileges on *.* to test% identified by suibowenkuangtu6;在MySQL 8中&#xff0c;创建用户和授权需要分开执行&#xff0c…

中电金信:逐数兴业 智启未来——“数据二十条”影响之解读 (下)

在逐数兴业 智启未来——“数据二十条”影响之解读&#xff08;上&#xff09;篇内容中&#xff0c;主要解读了有关于“数据二十条”发布的背景与意义、建立数据要素市场面临的挑战与应对。在今天的文章里&#xff0c;将继续解读“数据二十条”的主要内容以及对金融行业和金融科…

由于找不到vcruntime140_1.dll,无法继续执行代码(解决方法)

当我们在运行某个应用程序或游戏时&#xff0c;突然遇到了“找不到vcruntime140_1.dll”这个错误提示时&#xff0c;可能会感到有些困惑和沮丧。这个错误通常意味着我们的系统缺少了一个重要的运行库文件&#xff0c;即vcruntime140_1.dll&#xff0c;导致应用程序无法正常运行…