当前位置: 首页 > article >正文

【拒绝算法PUA】3065. 超过阈值的最少操作数 I

系列文章目录

【拒绝算法PUA】0x00-位运算
【拒绝算法PUA】0x01- 区间比较技巧
【拒绝算法PUA】0x02- 区间合并技巧
【拒绝算法PUA】0x03 - LeetCode 排序类型刷题
【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中

C++刷题技巧总结:
[温习C/C++]0x04 刷题基础编码技巧


文章目录

  • 系列文章目录
  • LeetCode 3065. 超过阈值的最少操作数 I
    • 链接
    • 题目
    • 解题方法1 (排序,然后for循环判断)
    • 解题方法2(利用小顶堆优化)


LeetCode 3065. 超过阈值的最少操作数 I

链接

3065. 超过阈值的最少操作数 I

题目

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。

一次操作中,你可以删除 nums 中的最小元素。

你需要使数组中的所有元素都大于或等于 k ,请你返回需要的 最少 操作次数。

 

示例 1:

输入:nums = [2,11,10,1,3], k = 10
输出:3
解释:第一次操作后,nums 变为 [2, 11, 10, 3] 。
第二次操作后,nums 变为 [11, 10, 3] 。
第三次操作后,nums 变为 [11, 10] 。
此时,数组中的所有元素都大于等于 10 ,所以我们停止操作。
使数组中所有元素都大于等于 10 需要的最少操作次数为 3 。
示例 2:

输入:nums = [1,1,2,4,9], k = 1
输出:0
解释:数组中的所有元素都大于等于 1 ,所以不需要对 nums 做任何操作。
示例 3:

输入:nums = [1,1,2,4,9], k = 9
输出:4
解释:nums 中只有一个元素大于等于 9 ,所以需要执行 4 次操作。
 

提示:

1 <= nums.length <= 50
1 <= nums[i] <= 109
1 <= k <= 109
输入保证至少有一个满足 nums[i] >= k 的下标 i 存在。

解题方法1 (排序,然后for循环判断)

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Solution {
public:
    int minOperations(vector<int>& nums, int k) {
        vector<int> copy(nums.begin(), nums.end());
        std::sort(copy.begin(), copy.end(), std::less<int>());

        int ans = 0;
        int size = nums.size();
        for (int i =0; i < size; i++) {
            if (copy[i] >= k) {
                ans = i;
                break;
            }
        }
        return ans;
    }
};

int main(int argc, char **argv) {
    vector<int> vec = {2, 11, 10, 1, 3};
    int k = 10;
    Solution obj;
    int ret = obj.minOperations(vec, k);
    cout << ret << endl;
    return 0;
}

输出:

3

在这里插入图片描述

解题方法2(利用小顶堆优化)

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>

using namespace std;

class Solution {
public:
    struct cmp {
        bool operator()(int a, int b) {
            return a > b; // 小顶堆
        }
    };

    int minOperations(vector<int>& nums, int k) {
        int ans = 0;
        priority_queue<int, vector<int>, cmp> pq(nums.begin(), nums.end());
        while (!pq.empty() && pq.top() < k) {
            pq.pop();
        }
        ans = nums.size() - pq.size();
        return ans;
    }
};

在这里插入图片描述


http://www.kler.cn/a/503881.html

相关文章:

  • ANSYS Fluent学习笔记(七)求解器四部分
  • IDEA的Git界面(ALT+9)log选项不显示问题小记
  • 金融项目实战 06|Python实现接口自动化——日志、认证开户接口
  • Qt 自动根据编译的dll或exe 将相关dll文件复制到目标文件夹
  • 银河麒麟服务器操作系统桌面任务栏网络图标消失问题
  • Android SystemUI——服务启动流程(二)
  • Spring Boot 2 学习全攻略
  • w~大模型~合集27
  • 托宾效应和托宾q理论。简单解释
  • uniapp 发布后原生img正常,image无法显示,img与uniapp image使用区别
  • 【Block总结】Conv2Former的Block,结合卷积网络和Transformer的优点|即插即用
  • 视频超分(VSR)论文阅读记录/idea积累(一)
  • 【学术会议指南】方向包括遥感、测绘、图像处理、信息化教育、计算机技术、通信、大数据、人工智能、机械设计、仿真...可线上参与
  • Oracle重启后业务连接大量library cache lock
  • 【web靶场】之upload-labs专项训练(基于BUUCTF平台)
  • 工程师 - Eclipse安装和UML插件
  • 代码随想录刷题day07|(数组篇)58.区间和
  • LeetCode 热题 100_从前序与中序遍历序列构造二叉树(47_105_中等_C++)(二叉树;递归)
  • AI-ANNE:探索型神经网络——将深度学习模型转移到微控制器和嵌入式系统
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/11】小测-【第11章NAT理论和实操考试】解析和参考
  • 中国地面气候资料日值数据集(V3.0)格式和下载说明
  • 【深度学习】核心概念-数据驱动(Data-Driven)
  • 详解C#的文件写入和读取:从基础到高级应用
  • 初识JAVA-面向对象的三大特征之多态
  • DS1302模块学习笔记
  • 【gin】http方法了解,以及RESTful API与版本控制