Leetcode3066. 超过阈值的最少操作数 II

Every day a Leetcode

题目来源:3066. 超过阈值的最少操作数 II

解法1:模拟

两个 int 类型的数 x 和 y 做操作:min(x, y) * 2 + max(x, y),得到的结果会超出 int 范围。

代码:

/*
 * @lc app=leetcode.cn id=3066 lang=cpp
 *
 * [3066] 超过阈值的最少操作数 II
 */

// @lc code=start
class Solution
{
public:
    int minOperations(vector<int> &nums, int k)
    {
        vector<long long> LLnums;
        for (int &num : nums)
            LLnums.push_back((long long)num);
        int count = 0;
        while (*min_element(LLnums.begin(), LLnums.end()) < k && LLnums.size() >= 2)
        {
            auto it = min_element(LLnums.begin(), LLnums.end());
            long long x = *it;
            LLnums.erase(it);
            it = min_element(LLnums.begin(), LLnums.end());
            long long y = *it;
            LLnums.erase(it);
            count++;
            long long add = min(x, y) * 2 + max(x, y);
            LLnums.push_back(add);
        }
        return count;
    }
};
// @lc code=end

结果:

在这里插入图片描述

解法2:优先队列

用一个最小堆模拟更方便。

代码:

typedef long long LL;

class Solution
{
public:
    int minOperations(vector<int> &nums, int k)
    {
        priority_queue<LL, vector<LL>, greater<>> pq;
        for (int &num : nums)
            pq.push((LL)num);

        int ans = 0;
        while (pq.top() < k)
        {
            LL x = pq.top();
            pq.pop();
            LL y = pq.top();
            pq.pop();
            pq.push(min(x, y) * 2 + max(x, y));
            ans++;
        }
        return ans;
    }
};

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(nlogn),其中 n 是数组 nums 的元素个数。

空间复杂度:O(n),其中 n 是数组 nums 的元素个数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【亲民实操课】聊聊那些在AI界立下汗马功劳的Python库,你值得拥有

嗨啰各位朋友&#x1f44f;&#xff0c;今天咱们来说说在人工智能这门深邃而又充满挑战的技术领域里&#xff0c;究竟有哪些Python库如同超级英雄一样&#xff0c;帮咱们解决实际问题&#xff0c;简化工作流程&#xff0c;从数据预处理一路狂奔到模型训练和应用落地。这次&…

Jmeter连接不同类型数据库语法

Jmeter连接不同类型数据库语法 添加&#xff1a;配置原件->JDBC Connection Configuration variable name for created pool&#xff1a;自定义一个线程池变量名database Connection Configuration database URL: 填写数据库ip、端口、dbname等&#xff0c;但是不同数据库…

微信小程序开发系列(十一)·小程序页面的跳转设置以及参数传递

目录 1. 跳转到商品列表 1.1 url: 当前小程序内的跳转链接 1.2 navigate&#xff1a;保留当前页面&#xff0c;跳转到应用内的某个页面。但是不能跳到 tabbar 页面 1.3 redirect&#xff1a; 关闭当前页面&#xff0c;跳转到应用内的某个页面。但不能跳转到 tabbar 页面…

在XCode中使用SwiftGen管理你的图片、配色、多语言文件等

SwiftGen是一个工具&#xff0c;可以为您的项目资源&#xff08;如图像、本地化字符串等&#xff09;自动生成Swift代码&#xff0c;然后你就可以像使用一个Class类一样访问你的资源了。 而且添加或更新资源后&#xff0c;SwiftGen也会自动更新用于访问资源的Class类。对于管理…

2023年全国职业院校技能大赛网络系统管理网络模块A模块(运维配置)

1.完成整网连通后,进入网络监控运维阶段,运维软件已安装在PC的虚拟机中,通过运维平台监控拓扑中所有网络设备(AP除外)。考试现场提供运维平台登陆的用户名密码信息。 2.通过运维平台将被监控设备纳入监控范围;通过拓扑配置功能,将网络拓扑配置到平台中。

K线实战分析系列之十八:十字线——判断行情顶部的有效信号

K线实战分析系列之十八&#xff1a;十字线——判断行情顶部的有效信号 一、十字线二、十字线总结三、三种特殊十字线四、长腿十字线五、墓碑十字线六、蜻蜓十字线七、特殊十字线总结 一、十字线 重要的反转信号 幅度较大的下跌&#xff0c;出现一根十字线&#xff0c;正好是在…

Unity使用UnityWebRequest读取音频长度不对的解决方法

在开发的过程中碰到这样一个问题&#xff0c;有的音频文件通过UnityWebRequest读取出来后&#xff0c;AudioClip的Length会不对&#xff0c;比如本身有7秒&#xff0c;读出来只有3秒。代码如下&#xff1a; IEnumerator TestEnumerator() {UnityWebRequest www UnityWebReque…

《UE5_C++多人TPS完整教程》学习笔记27 ——《P28 项目资产(Assets for The Project)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P28 项目资产&#xff08;Assets for The Project&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译…

【LeetCode:98. 验证二叉搜索树 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

每周三提前预知:绝地求生PUBG七周年活动即将来袭,你最期待什么活动形式?

不知不觉PUBG正式服已经上线七个年头了&#xff0c;这七个年头里估计也给大家带来了很多难忘的回忆。每一年的周年活动里&#xff0c;代表性的衣服和枪皮那肯定是少不了。不知道大家印象最深刻的是哪一套&#xff0c;反正我印象最深刻的莫过于三四周年的卫衣。 这两年中三四周年…

MATLAB知识点:循环语句中的break 和 continue 关键字

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 break 和 con…

CSS的文本样式属性值,web开发难点

什么是css块元素&#xff1f; 块级元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中&#xff08;除非脱离了文档流&#xff09;。通俗点来说&#xff0c;就是块元素(block element)一般是其他元素的容器元素 戳这里领取完整开源项目&#xff1a;【一线大厂前端面试题…

金融科技创新丨MogDB 数据库助四川天府银行信息化改造迈上新台阶

作为四川省重要的城市商业银行之一&#xff0c;四川天府银行自2001年12月成立以来&#xff0c;在中国银行业树立了多项标杆&#xff0c;逐步发展成为具有国际金融背景、跨区域、独具特色的现代精品银行。在信息系统升级改造的道路上&#xff0c;四川天府银行一直秉承着稳中求进…

【DIY】钱包的“电子卫士”的制作

一、工作原理 钱包的“电子卫士”电路如图1所示&#xff0c;其核心元件是微型蜂鸣器专用音响集成电路A&#xff0c;它与压电陶瓷蜂鸣片B、电池G等组成了一个体积小巧、发声响亮的简易蜂鸣器。 平时&#xff0c;钱包通过尼龙线与插头XP相接&#xff0c;而XP插入插孔XS内&#x…

android插件化开发指南,字节跳动安卓开发面试题

Android进阶延伸点 1、如何进行单元测试&#xff0c;如何保证App稳定 &#xff1f; 参考回答&#xff1a; 要测试Android应用程序&#xff0c;通常会创建以下类型自动单元测试 本地测试&#xff1a;只在本地机器JVM上运行&#xff0c;以最小化执行时间&#xff0c;这种单元测…

Javaweb day11 day12

maven 1. maven的介绍 安装 idea集成maven 设置全局的 接下来和刚才一样 创建mavem项目 maven坐标 idea导入maven 依赖管理 1.依赖配置 2.依赖传递 3.依赖范围 4.生命周期

【C++】继续学习 string类 吧

开始使用 string类 吧 1 继续学习1.1 扩容机制1.2 string类对象的访问及遍历操作1.3 string类对象的修改操作1.4 其他一些成员函数 2 实践解决问题&#xff1a;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

flutter弹窗输入,Android学习的三个终极问题及学习路线规划

题库非常全面包括&#xff1a; Android基础知识: 基本涵盖Android所有知识体系&#xff0c;四大组件&#xff0c;Fragment,WebView,事件分发&#xff0c;View绘制…Java基础知识&高阶知识点: 基础部分不谈了&#xff0c;高阶部分&#xff1a;泛型&#xff0c;反射&#xff…

pytorch(六、七)多维特征数据的输入、加载数据集的类

文章目录 多维特征数据的输入代码 加载数据集概念 多维特征数据的输入 对于一个多维数据&#xff0c;其行表示一个样本&#xff0c;列表示样本的特征 对于多维特征的运算&#xff0c;实质上可以当做特征的映射 代码 import torch import torch.nn.functional as F import …

uniapp实现单选框卡片选择器,支持微信小程序、H5等多端

采用uniapp-vue3实现的一款单选框卡片选择器&#xff0c;纯CSS实现样式和交互&#xff0c;提供丝滑的动画选中效果&#xff0c;支持不同主题配置&#xff0c;适配多端 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id16901 使用示例 示例代码 <te…