2023-07-25 LeetCode每日一题(将数组和减半的最少操作次数)

news2024/11/29 19:34:01

2023-07-25每日一题

一、题目编号

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

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

示例1:
在这里插入图片描述
示例2:
在这里插入图片描述
提示:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 107

四、解题代码

class Solution {
    priority_queue<float, vector<float>, less<float>> q;
public:
    int halveArray(vector<int>& nums) {
        int n = nums.size();
        double sum = 0;
        for(int i = 0; i < n; ++i){
            q.push(nums[i]);
            sum += nums[i];
        }
        double target = (double)sum / 2;
        int res = 0;
        while(sum > target){
            float max_num = q.top();
            float num = max_num / 2;
            sum -= num;
            q.pop();
            q.push(num);
            ++res;
        }
    return res;
    }
};

五、解题思路

(1) 使用优先队列来解决该问题。首先我们求出数组中所有数字之和,因为数字最大是107 * 105,所以用double类型。后面除了数字小点的用float类型就够了,其余都使用double类型。

(2) 我们的目标是将和至少减少到最开始的一半,而且我们可以将存在的任何一个数字减少到一半,那我们要减少的更多,那么就每次减少最大的数字即可,这是贪心的思想。

(3) 我们如何得到最大的数字呢,自然考虑到优先队列,建立大根堆,这样队首的元素就是最大值。

(4)直到元素之和小于等于原来值的一半退出循环,将记录的次数输出即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app云打包(android)(自有证书、云端证书、公共测试证书)

一、进入云打包入口 发行->原生App-云打包 二、证书选择 1、使用自有证书 ①进入香蕉云编&#xff08;这里采用的证书从香蕉云编进行生成&#xff09; 香蕉云编-app打包上架工具类平台 ②进入页面选择“生成签名证书”->"立即创建证书" ③选择“安卓证书生…

一些python的高级方法(闭包、装饰器、多线程详解)

目录 闭包 装饰器 普通用法 多层装饰器 设计模式 单例模式 工厂模式 多线程 基础使用 得到当前的线程 守护线程 线程阻塞join方法 线程锁 Lock 递归锁对象RLock 闭包 例如要实现一个存钱的功能&#xff0c;可以这么做 account_amount 0def atm(num,deposit Tr…

linux学成之路(基础篇(二十三)MySQL服务(中)

目录 MySQL服务之SQL语句 一、SQL语句类型 一、 DDL语句 二、DML语句 三、DCL语句 四、DQL 语句 二、 数据库操作 一、查看 二、创建 三、进入 四、删除数据库 五、更改数据库名称 六、更改字符集 三、数据表管理 一、数据类型 一、数值类型 TINYINT SMALLINT…

组件间通信案例练习

1.实现父传子 App.vue <template><div class"app"><tab-control :titles["衣服","鞋子","裤子"]></tab-control><tab-control :titles["流行","最新","优选","数码&q…

网络安全 Day08-Linux文件属性知识

Linux 文件属性知识 1. 查看文件属性2. 文件属性知识 1. 查看文件属性 语法&#xff1a;ls -lhi&#xff08;l-长格式 h-人类可读&#xff09;结果[rootlocalhost ~] ls -lhi total 11M 202312369 drwxr-xr-x. 31 root root 4.0K Jul 30 2023 1 134317954 -rw-------. 1 roo…

SpringBoot实战(二十二)集成 Sleuth、Zipkin

目录 一、简介1.Sleuth2.Zipkin 二、搭建 zipkin-server1.jar包启动2.docker启动3.自己搭建**Maven依赖**添加启动类注解 4.页面截图 三、搭建 sleuth-zipkin1.Maven 依赖2.yaml配置3.代码实现DemoController.javaDemoFeignClient.java 4.测试 一、简介 1.Sleuth 官方文档&am…

安全技术-大数据平台安全防护技术

一、大数据基本概念及背景 1.1大数据发展的背景-数据爆炸 伴随着互联⽹、物联⽹、电⼦商务、社交媒体、现代物流、⽹络⾦融等⾏业的发展&#xff0c;全球数据总量正呈⼏何级数增长&#xff0c;过去⼏年时间产⽣的数据总量超过了⼈类历史上的数据总和&#xff0c;预计2020年全…

json的序列化与反序列化

目录 json的下载 json的序列化 json的反序列化 备注json开源项目github地址&#xff1a;https://github.com/nlohmann/json 备注开发环境&#xff1a;vscode通过ssh连接虚拟机中的ubuntu&#xff0c;ubuntu-20.04.3-desktop-amd64.iso json的下载 git clone https://githu…

iptables的备份和还原

iptables的备份和还原 1、写在命令行当中的都是临时设置 2、把规则配置写在服务的文件当中&#xff0c;形成永久有效 备份&#xff1a;把iptables里面所有的配置都保存在/opt/ky30.bak中 iptables-save > /opt/ky30.bak 例&#xff1a; 默认配置文件在/etc/sysconfig/ip…

C++ const与指针

const与指针 1.const在C语言和C中的区别 &#xff08;1&#xff09;在C语言中 #include<stdio.h> int main() {const int n 10; int arr[n] { 1,2 }; //errorreturn 0; }在C语言中&#xff0c;const修饰的变量是只读变量&#xff08;常变量&#xff09;&#xff0c…

假如三国有网络安全攻防演练

东汉末年&#xff0c;天下三分&#xff0c;而奠定这一局势的战役就是历史上赫赫有名的“赤壁大战”。 作为我国以少胜多的经典战例&#xff0c;赤壁之战汇聚了三国最顶级的名臣武将&#xff0c;期间各种计谋、策略环环相扣&#xff0c;高潮迭起&#xff0c;攻守双方你方唱罢我…

【Java|golang】860. 柠檬水找零

在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零&#xff0c;…

AtcoderABC235场

A - Rotate A - Rotate 题目大意 题目要求给定一个3位的整数abc&#xff0c;其中每个数字都不是0。计算abc bca cab的结果。 思路分析 将a、b和c按照题目要求的顺序连接起来&#xff0c;得到字符串abc、bca和cab。将这三个字符串转换为整数&#xff0c;分别表示为变量abc…

【后端面经】微服务构架 (1-3) | 熔断:抖抖抖不停?微服务熔断策略让你的系统稳如泰山!

文章目录 一、前置知识1、什么是熔断?2、什么是限流?3、什么是降级?4、怎么判断微服务出现了问题?A、指标有哪些?B、阈值如何选择?C、超过阈值之后,要不要持续一段时间才触发熔断?5、服务恢复正常二、面试环节1、面试准备2、面试基本思路三、总结 在微服务构架中…

ModuleNotFoundError: No module named ‘transformers.models.mmbt‘

使用simpletransformers时出现ModuleNotFoundError: No module named transformers.models.mmbt’错误。 1. 报错代码&#xff1a; from simpletransformers.classification import ClassificationModel 2. 报错结果 3. 报错原因 transformers和simpletransformers版本的问…

【C语言进阶篇】数组指针都学过了那么函数指针你了解嘛?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 函数指针&#x1f4ad; 函数名 和 &函数&#x1f4ad; 函数指针的定义&am…

蕨型叶分形

目录 要点 基本语句 EraseMode 习题 1 设置颜色 2 旋转蕨型叶图 3 枝干 4 塞平斯基三角形 要点 蕨型叶是通过一个点的反复变换产生的&#xff0c;假设x是一个含有两个分量的向量&#xff0c;可以用来表示平面内的一个点&#xff0c;则可以用Axb的形式对其进行变换。 基本…

衡器关于检定分度值e和实际分度值d的一点认识

在看衡器认证的文档时有两个概念很容易混淆d(actual scale interval)和e(verification scale interval)&#xff0c;国内文档上翻译为实际分度值和检定分度值。 实际分度值(d)就是称能显示的最小刻度或最小能显示的值跨度&#xff0c;可以理解为可读精度&#xff0c;例如电子秤…

[虚幻引擎] UE里面监控每帧循环里面 C++ 函数的性能, 函数耗时,函数效率,函数执行时间

在使用C开发UE引擎&#xff0c;有时候需要监控函数的执行的执行效率&#xff0c;这个时候有两种方式可以使用。 1. 执行代码耗时时间 double ThisTime 0;{SCOPE_SECONDS_COUNTER(ThisTime);// ...// 一串代码// ...}UE_LOG(LogTemp, Log, TEXT("Stats::Broadcast %.2f&qu…

【Spring Boot】Web开发 — 数据验证

Web开发 — 数据验证 对于应用系统而言&#xff0c;任何客户端传入的数据都不是绝对安全有效的&#xff0c;这就要求我们在服务端接收到数据时也对数据的有效性进行验证&#xff0c;以确保传入的数据安全正确。接下来介绍Spring Boot是如何实现数据验证的。 1.Hibernate Vali…