牛客题解 | 查找第K大的元素

news/2025/3/10 10:11:14/文章来源:https://www.cnblogs.com/wc529065/p/18761959

题目

题目链接

题解

该问题为排序问题,给出几种常用方法:

方法(一)

使用vector,用库函数sort进行排序。

#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
bool compare(const int &amp;a,const int &amp;b){return a&gt;b;}
int main(){int num; vector<int> v; 
//将字符串中的数字放入vector中 while(getchar()!=']'){cin&gt;&gt;num;v.push_back(num);   }
//sort排序,默认为由小到大,需要由大到小自己写compare函数 sort(v.begin(),v.end(),compare);
//输出第三大的数字cout&lt;<v[2]; return 0; } ``` ##方法(二) 冒泡排序 #include<vector>
#include<iostream>
using namespace std;
int main(){int num; vector<int> v; 
//将字符串中的数字放入vector中 while(getchar()!=']'){cin&gt;&gt;num;v.push_back(num);   }
//冒泡排序 for(int i = 0 ;i<v.size();i++){ 第i趟比较 for(int j="0" ;j<v.size()-i-1;j++){ 开始进行比较,如果arr[j]比arr[j+1]的值小,那就交换位置 if(v[j]<v[j+1]){ int temp="v[j];" v[j]="v[j+1];" v[j+1]="temp;" } 输出第三大的数字 cout<<v[2]; return 0; ``` ##方法(三) 快速排序 #include<vector>
#include<iostream>
using namespace std;
//快排void swap(vector<int> &amp;arr, int i, int j) {if (arr.size()==0 || i &gt;= arr.size() || j &gt;= arr.size() || i &lt; 0 || j &lt; 0) {return;}int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}int partion(vector<int> &amp;data, int begin, int end) {int temp = data[begin];while (begin &lt; end) {while (begin &lt; end &amp;&amp; data[end] &lt;= temp) {end--;}swap(data, begin, end);while (begin &lt; end &amp;&amp; data[begin] &gt; temp) {begin++;}swap(data, begin, end);}return begin;}int findKthNum(vector<int> &amp;data, int k) {int begin = 0, end = data.size() - 1;int pos = 0;while (begin &lt;= end) {pos = partion(data, begin, end);if (pos == k - 1) {return data[pos];} else if (pos &gt; k - 1) {end = pos - 1;} else {begin = pos + 1;}}return -1;} 
int main(){int num; vector<int> v; 
//将字符串中的数字放入vector中 while(getchar()!=']'){cin&gt;&gt;num;v.push_back(num);   }
//调用快排输出第三大的数 cout&lt;<findkthnum(v,3); return 0; } ``` ##方法(四) 求第n个最大的数先建立最小堆把海量数据向最小堆添加n个数,堆的内部会自动排序,不用管它的内部是什么操作。然后我们往最小堆进行插入操作,因为最小堆的特点就是堆顶元素最小。若插入元素小于堆顶元素 ,则它小于堆中任何一个元素, 所以摒弃该元素遍历下一个元素。若插入元素大于堆顶元素则进行插入, 插入后堆内自动排序,堆顶元素又成为该堆的最小元素 ,原堆顶元素出堆。持续遍历完得到的就是所有元素中第n个最大数。 #include<iostream>
#include<queue>
#include<vector>
using namespace std;
int main(){//在最短时间内找到所有整数中最大/最小的n个数并且打印;//找top最大的用小根堆;找top最小的用大根堆//时间复杂度 O(n)*log2 nvector<int> v;//保存字符串中所有出现的数 int n=0;int num;while(getchar()!=']') {cin&gt;&gt;num;n++;v.push_back(num);   }priority_queue<int, vector<int>, greater<int> &gt; minHeap; //建立最小堆//注意:最小堆要加上greater<int>int j = 3;for (int i = 0; i &lt; j; i++)  {minHeap.push(v[i]);}for (int i = j; i &lt; n; ++i){//遍历判断容器中剩余的每个数与堆顶元素的大小//若大于堆顶元素 则把堆顶元素出堆 把该元素入堆if (v[i] &gt; minHeap.top()){minHeap.pop();minHeap.push(v[i]);}}cout &lt;&lt; minHeap.top() &lt;&lt; " ";cout &lt;&lt; endl;return 0;
}

</int,></findkthnum(v,3);></v.size();i++){></v[2];>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Capture one 2023下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【061】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程(建议关闭杀毒软件和系统防护)解压下载安装包,双击软件安装,弹窗安装对话框选择中文,点击确定选择‘我同意。’ 点击下一步选择安装目录,建议C盘之外…

S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现

选择性自我监督微调(Selective Self-to-Supervised Fine-Tuning,S3FT)是一种创新的大语言模型微调方法,该方法通过部署专门的语义等价性判断器来识别训练集中模型自身生成的正确响应。在微调过程中,S3FT策略性地结合这些正确响应与剩余样本的标准答案(或其释义版本)来优…

20242935 2024-2025-2 《网络攻防实践》第二周作业

20242935 2024-2025-2 《网络攻防实践》第二周作业 网络信息收集技术 一、实验要求 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理…

Xmanager 8下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【059】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程(建议关闭杀毒软件与本地防护设置)双击Xmanager-8.0.0055r.exe安装,弹窗安装对话框点击下一步选择‘我接受。。’,点击下一步选择安装目录D盘,点击下一…

Xftp 8软件下载与安装教程

Xftp 8中文版是一款十分强大、传输快速的FTP文件传输工具,它拥有着十分庞大的用户群体,其凭借着简单的界面、便捷的操作以及强大的功能,深受广大用户的好评与喜爱,当然它也是许许多多专业人士的必备工具之一。 由于Xftp 8是基于MS windows平台的STP和FTP传输工具,所以它不…

HarmonyOS SDK让小红书鸿蒙用户尽享原生相机的拍摄之美

小红书是深受年轻人喜爱的生活社交类社区平台,越来越多的人在小红书上分享旅行、日常、心情。近日,不少使用鸿蒙原生版小红书的细心用户已经发现,直接使用小红书拍摄照片与自己使用原相机拍摄有一样清晰美观的呈现效果。不仅如此,小红书现已支持用户直接从图库中上传动态照…

Xshell 8软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【057】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程(建议关闭杀毒软件与本地防护设置)双击Xshell-8.0.0055r.exe安装,弹窗安装对话框点击下一步选择‘我接受。。’,点击下一步选择安装目录D盘,点击下一步…

(附体验地址)大模型知识引擎:AI 助手能否助力销售技能提升?

体验地址:https://lke.cloud.tencent.com/webim_exp/#/chat/FAIMcM 腾讯云的大模型知识引擎本身定位于为企业客户及合作伙伴提供服务,因此我在探索如何最佳利用其现有功能与特点时,专注于实际应用场景的挖掘。为此,今天我搭建出了一个卖车销售话术练习助手,旨在帮助销售人…

Hyper V高级用法:优化虚拟机性能策略

在利用Hyper-V进行虚拟化部署时,优化虚拟机性能是至关重要的,这涉及到多个方面的策略和配置。以下是一些高级用法和优化策略,旨在提升虚拟机的整体性能和资源利用率:一、硬件配置优化 启用硬件虚拟化: 确保主机的CPU支持硬件虚拟化技术(如Intel VT-x或AMD-V),并在BIOS/…

Windbg初见

下载与安装在微软商店中找到Windbg即可。 这里是拼网速的时间,校园网可能有帮助。在等下载的这段时间里面我也看了一些博客,大概了解了一下windbg的用法。 不过怎么说还是得在虚拟机也下载一个,总是不能在实体机调试的。在Layout里面修改为Disassembly,这下有点od的样子了。…

No.40 JavaScript---防抖(debounce)、节流(throttle)

一、防抖 1.含义防抖严格算起来应该属于性能优化的知识,但实际上遇到的频率相当高,处理不当或者放任不管就容易引起浏览器卡死。2.从滚动条监听的例子说起<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><me…

IDEA 必备插件!轻松搞定 JSON 格式化!

Json Assistant —— 基于 IntelliJ IDEs 的 JSON 工具插件,支持 IntelliJ IDEA、DataGrip、PyCharm Professional、WebStorm 等常用的 IDE 工具!大家好,我是 Java陈序员。 在日常开发中,常常会遇到 JSON 数据的处理,可以借助一些在线 JSON 工具网站,进行处理。 但是,经…