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

HOT74-数组中的第K个最大元素

        leetcode原题链接:数组中的第K个最大元素

题目描述

       给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

       你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4

提示:

  • 1 <= k <= nums.length <= 105
  • -104 <= nums[i] <= 104

解题方法: 小顶堆。求最大的k个元素用小顶堆,求最小的k个元素用大顶堆。同时注意下c++的语法糖。std::less用于定义大顶堆, std::greater用于定义小顶堆。

C++代码

#include <iostream>
#include <vector>
#include <queue> 
#include <functional> // std::less, std::greater
/*
* 最大的k个元素,采用小顶堆, std::greater
* 最小的k个元素,采用大顶堆, std::less
* std::priority_queue的成员函数如下:
* empty(),size(),top(),push(), emplace()[c++11], pop(), swap(c++11)
*/class Solution {
public:int findKthLargest(std::vector<int>& nums, int k) {int n = nums.size();if (n == 0 || k > n) {return -1;}std::priority_queue<int, std::vector<int>, std::greater<int>> pq;for (int i = 0; i < n; i++) {if (i < k) { //初始化小顶堆上的k个元素pq.emplace(nums[i]);} else if (nums[i] > pq.top()) { //当前遍历的数字比堆顶元素大pq.pop();//先弹出堆顶元素pq.emplace(nums[i]);//再压入元素}}return pq.top();//小顶堆的头节点就是第k大元素}
};

相关文章:

HOT74-数组中的第K个最大元素

leetcode原题链接&#xff1a;数组中的第K个最大元素 题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O…...

类与对象【中】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;类的默认6个成员函数&#x1f449;&#x1f3fb;构造…...

uni-app:实现列表单选功能

效果图&#xff1a; 核心解析&#xff1a; 一、 <view class"item_all" v-for"(item, index) in info" :key"index"><view classposition parameter-info text-over :classitem.checked?"checked_parameter":""…...

vue中axios二次封装并发起网络请求配置

1.安装axios npm i axios 2.导入 //对axios进行二次封装 import axios from "axios"// 创建axios实例&#xff0c;其实request就是axiosconst requests axios.create({// 发请求的时候自动出现api// baseURL:"api",// 请求超时的时间timeout:5000, })…...

开源全文搜索引擎汇总

1、Apache Lucene Java 全文搜索框架 许可证:Apache-2.0 开发语言:Java 官网:https://lucene.apache.org/。Apache Lucene 是完全用 Java 编写的高性能、功能齐全的全文检索引擎架构,提供了完整的查询引擎和索引引擎、部分文本分析引擎。目的是为软件开发人员提供一个简单…...

gitlab CI/CD 安装 gitlab runner

一、为什么需要安装gitlab runner &#xff1f; 极狐GitLab Runner 极狐GitLab Runner 是在流水线中运行作业的应用&#xff0c;与极狐GitLab CI/CD 配合运作。 说白了就是你部署的一个agent。 二、如何安装&#xff1f; 1.介绍通过helm部署github runner 2.helm添加仓库 h…...

服务器中了malox勒索病毒后怎么办怎么解决,malox勒索病毒解密数据恢复

服务器遭受Malox勒索病毒攻击后&#xff0c;快速解密并恢复数据至关重要&#xff0c;以便减少更大的经济损失。近期&#xff0c;新的一波malox勒索病毒正在肆虐&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器数据库遭到了malox勒索病毒攻击&#xff0c;导致系统内…...

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…...

word转pdf两种方式(免费+收费)

一、免费方式 优点&#xff1a;1、免费&#xff1b;2、在众多免费中挑选出的转换效果相对较好&#xff0c;并且不用像openOffice那样安装服务 缺点&#xff1a;1、对字体支持没有很好&#xff0c;需要安装字体库或者使用宋体&#xff08;对宋体支持很好&#xff09;2、对于使…...

基于图像形态学处理的目标几何形状检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................... %二进制化图像 Images_bin imbinari…...

python系列教程211——map

朋友们&#xff0c;如需转载请标明出处&#xff1a;https://blog.csdn.net/jiangjunshow 声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术&#xff0c;我让助理负责分享…...

SW - 3D打印件最好带上浮雕文字标记

文章目录 SW - 3D打印件最好带上浮雕文字标记概述笔记END SW - 3D打印件最好带上浮雕文字标记 概述 做了一些散料飞达的压板, 下了3D打印的单. 一共有10种压板, 每种压板做的数量不等.压板分为2个大的类(中间压板, 边上的压板), 每个类中分了5个子类, 子类之间只是一个高度方…...

Kafka-副本数量设置

1. ISR副本数量设置 指的是存活的副本数量 ISR 机制的另外一个相关参数是 min.insync.replicas , 可以在 broker 或者主题级别进行配置&#xff0c;代表 ISR 列表中至少要有几个可用副本。这里假设设置为 2&#xff0c;那么当可用副本数量小于该值时&#xff0c;就认为整个分…...

解决github打不开的方法

解决github打不开的方法 本文参考文章&#xff1a;解决可ping通但无法访问github网站的问题 一、确定域名github.com的ip地址 进入网址 IP/服务器github.com的信息 - 站长工具 (chinaz.com)&#xff0c;查看 ip 地址。 20.205.243.166 github.com二、确定域名github.global.…...

【云原生】Docker中容器管理常用所有命令

1.docker 容器创建流程 2.容器运行本质 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 创建容器基本选项&#xff1a;--name&#xff1a;为容器命名 -i&#xff1a;交互式创建容器 -d&#xff1a;后台创建容器 -t&#xff1a;为容器分配伪终端 Docker 容器存在的意义就是为…...

Flutter video_player点击重新播放

视频播放完成之后&#xff0c;暂停视频&#xff0c;点击重新播放 import package:flutter/material.dart; import package:video_player/video_player.dart;class ListViewItemWidget extends StatefulWidget{overrideState createState() {return _ListViewItemWidgetState()…...

CSS3属性之text-overflow:ellipsis

语法&#xff1a; text-overflow:clip | ellipsis 默认值为clip 不显示省略标记 clip:当前对象内文本溢出时不显示省略标记,而是将溢出部分裁剪。 ellipsis:当对象内文本一处时显示省略标记(...)。 一、常见的单行文本溢出显示省略写法&#xff1a; text-overflow: ellipsis; …...

【深度学习_TensorFlow】梯度下降

写在前面 一直不太理解梯度下降算法是什么意思&#xff0c;今天我们就解开它神秘的面纱 写在中间 线性回归方程 如果要求出一条直线&#xff0c;我们只需知道直线上的两个不重合的点&#xff0c;就可以通过解方程组来求出直线 但是&#xff0c;如果我们选取的这两个点不在直…...

C++使用 auto 自动推断类型

C使用 auto 自动推断类型 在有些情况下&#xff0c; 根据赋给变量的初值&#xff0c; 很容易知道其类型。 例如&#xff0c; 如果将变量的初值设置成了 true&#xff0c;就可推断其类型为 bool。如果您使用的编译器支持 C11 和更高版本&#xff0c;可不显式地指定变量的类型&a…...

【前端面试手撕题】call、bind、new、freeze、浅拷贝

FED11 _call函数 描述 请补全JavaScript代码&#xff0c;要求实现Function.call函数的功能且该新函数命名为"_call"。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><style>/* 填写样式 */</style> </head…...

LVGL 8.x 实战:搞定Label点击、背景色和文字对齐的3个高频难题

LVGL 8.x实战&#xff1a;攻克Label交互、样式与布局的三大核心痛点 在嵌入式UI开发领域&#xff0c;LVGL以其轻量级和高度可定制性成为众多开发者的首选。但当我们真正开始构建第一个界面时&#xff0c;往往会遇到一些看似简单却令人抓狂的问题——为什么Label不能点击&#…...

爬虫进阶:如何用ProxyPool代理池+随机UA绕过掌上高考的反爬?保姆级避坑指南

数据采集实战&#xff1a;构建高隐蔽性教育信息采集系统的关键技术解析 教育数据采集领域近年来呈现出明显的技术对抗态势&#xff0c;平台方不断升级防御机制&#xff0c;而数据采集方则需要持续优化技术手段。本文将系统性地介绍构建高隐蔽性教育信息采集系统的完整技术方案&…...

别再手动调了!用MATLAB的Text对象属性批量设置图表字体,效率提升90%

MATLAB科研绘图效率革命&#xff1a;Text对象属性批量操控指南 科研工作者常面临一个看似简单却极其耗时的任务——图表字体格式调整。当论文需要提交到不同期刊&#xff0c;每个期刊对图表字体、字号、颜色都有特定要求时&#xff0c;手动逐个修改轴标签、标题和图例的字体属性…...

DeepSeek+GCP生产就绪 checklist(含IAM最小权限矩阵、VPC Service Controls白名单、审计日志留存合规项)——限时开放下载

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeekGCP生产就绪部署全景概览 DeepSeek大模型在Google Cloud Platform&#xff08;GCP&#xff09;上的生产就绪部署&#xff0c;需兼顾模型服务化、弹性扩缩容、可观测性、安全合规与成本优化五大核心维度…...

深入UE渲染管线:从.usf文件到FGlobalShader,理解全局Shader的完整生命周期与最佳实践

深入UE渲染管线&#xff1a;从.usf文件到FGlobalShader&#xff0c;理解全局Shader的完整生命周期与最佳实践 当我们需要在Unreal Engine中实现一个全新的后处理效果或定制底层渲染管线时&#xff0c;全局Shader&#xff08;Global Shader&#xff09;往往是必经之路。与材质编…...

别再为VMware里Kali上不了网发愁了!三种网络模式(桥接/NAT/仅主机)保姆级配置与排错指南

VMware中Kali Linux网络配置全攻略&#xff1a;从原理到实战排错 当你第一次在VMware中启动Kali Linux准备大展身手时&#xff0c;却发现连最基本的网络连接都无法建立——这种挫败感我深有体会。作为网络安全学习和渗透测试的必备工具&#xff0c;Kali在虚拟机中的网络配置往往…...

Vivado/DC中set_max_delay的另类用法:搞定异步FIFO等CDC路径的“半时序检查”

Vivado/DC中set_max_delay的工程艺术&#xff1a;异步FIFO时序约束的第三种策略 在数字电路设计中&#xff0c;异步时钟域&#xff08;CDC&#xff09;路径的处理一直是工程师们面临的棘手问题。传统做法往往陷入非黑即白的极端——要么完全忽略时序检查&#xff08;set_false_…...

喜马拉雅音频下载神器:告别网络限制,随时随地畅听付费内容

喜马拉雅音频下载神器&#xff1a;告别网络限制&#xff0c;随时随地畅听付费内容 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 …...

每天节省25分钟!淘宝淘金币全自动任务脚本终极指南

每天节省25分钟&#xff01;淘宝淘金币全自动任务脚本终极指南 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi 你是否厌…...

MC/DC覆盖率:从原理到实战,破解100%覆盖率的迷思与挑战

1. 项目概述&#xff1a;当“完美”成为负担在软件测试领域&#xff0c;尤其是对安全关键系统&#xff08;比如航空航天、汽车电子、医疗设备&#xff09;的验证&#xff0c;我们常常听到一个词&#xff1a;100%覆盖率。这听起来像是一个终极目标&#xff0c;一个完美的终点。但…...