使用STL求第K大数

寻找第K大数的方法 摘自:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。       名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。       解法1 阅读详情

项目上需要使用C++,抽空正好把C++熟悉一下。

期待接下来的这个项目能给我的C++编程能力带来提升。

先来个set版本的。

#include <iostream>
#include <string>
#include <ios>
#include <deque>
#include <vector>
#include <list>
#include <set>
#include <algorithm>
using namespace std;

int main( ) {
	int		a, n, k, size;
	multiset<int> mySet;
	multiset<int>::iterator iter;
	cin >> n >> k;
	size = 0;
	do {
		cin >>a;
		if(size++ < k) {
			mySet.insert(a);
		} else {
			iter = mySet.begin();
			if(a > *iter) {
				mySet.erase(iter);
				mySet.insert(a);
			}
		}
	}while(--n );
	iter = mySet.begin();
	cout << *iter <<endl;
	system("pause");
	return 0;
}
再来个map版本的。

#include <iostream>
#include <string>
#include <ios>
#include <deque>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <algorithm>
using namespace std;

int main( ) {
	int		a, n, k, size;
	map <int, bool> myMap;
	map <int, bool>::iterator iter;
	cin >> n >> k;
	size = 0;
	do {
		cin >>a;
		if(size++ < k) {
			myMap[a] = true;
		} else {
			iter = myMap.begin();
			if(a > (iter->first)) { 
				myMap.erase(iter);
				myMap[a] = true;
			}
		}
	}while(--n );
	iter = myMap.begin();
	cout << iter->first <<endl;
	system("pause");
	return 0;
}



Ghidra逆向工具入门:从安装到实战分析baby.exe(附详细配置截图) 本文详细介绍了Ghidra逆向工具的安装配置与实战应用,通过破解CTF题目baby.exe的全过程展示其强大功能。从Java环境搭建到插件配置,再到反编译技巧与动态调试方法,帮助读者快速掌握这款免费开源的反编译神器,有效替代收费的IDA Pro工具。 阅读详情

相关推荐

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet),有灵活的接口规范与开放生态。采用对商用友好的 Apache 2.0 开源协议。

向往自由的少年!(我是一个少年!!!) 1698

【OJ - 堆】找数组中的第K个最大元素(C++ STL - priority_queue)

题目难度:中等LeetCode链接:215. 数组中的第K个最大元素题目描述:使用头文件 中的 sort 函数模板,直接排序,找到第k个最大的元素 时间复杂度:因为 sort 底层是快速排序,所以时间复杂度为 O(N∗logN)O(N*logN)O(N∗logN) 空间复杂度:O(1)O(1)O(1) 思路2:建大堆 使用堆排序,建立 n 个元素的大堆,做 k - 1 次删除操作后,此时堆顶元素就是第k个最大的元素因为 C++ 的优先级队列 priority_queue 本质就是堆,所以这道题我没有

codewinter的博客 1192

Android系统编译之Communication error with Jack server (35), try ‘jack-diagnose‘ or see Jack server log

jack server failed场景个人分析网上分析分析1分析2原因1:权限问题原因2:端口占用原因3:删除 TLSv1, TLSv1.1测试结论解决方案说明相关链接 场景 在进行Android系统开发时,在liunx编译时发生问题,描述如下: ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper

weixin_43194854的博客 2401

[leetcode215][c++实现]数组中的第K个最大元素

记录下面试高频题,数组中的第K个最大元素。 这里记录用最大堆的解法,思路应为:构建一个最大堆,弹出堆顶元素,然后最大堆会自动维护,重复k次过程,就可以得到第K大的元素。 时间复杂度分析:构建最大堆:O(n),删除k个:O(klogn)。 首先记录一版调用api的代码 #include <iostream> #include <string> #include <set> #include <cmath> #include <vector&.

slamdunkofkd的博客 562

Unity游戏开发实战:用Flow Field实现RTS百人军团流畅寻路(附完整代码)

本文深入探讨了在Unity中利用流场寻路技术解决RTS游戏大规模单位移动性能瓶颈的实战方案。通过解析从Dijkstra算法生成成本场、积分场到最终向量场的核心原理,并结合分块、缓存及与DOTS/ECS架构集成的优化策略,实现了百人军团的流畅群体寻路。文章提供了完整的代码示例,助力开发者构建高性能的RTS寻路系统。

weixin_28363123的博客 587

VS2010“未能正确加载包”问题解决方法小汇

本文按照由简至繁的顺序详述了借助网络获知的四种解法,主要面向重装 VS2010 后遭遇题述问题的网友,相关包尤指 VSTS、RadLangSvc、Language、Bootstrap 及 MicrosoftDataEntityDesign。

虚有其表的博客 1万+

查找最大的K个数 查找最小的K个数

思路 使用一个容器,大小为K;用这个容器来保存这最大的或者最小的K个数。 如果是找最大的K个数,那么,每次和容器中的最小元素比较,如果最小的元素小于当前元素,那么删除这个最小的元素,同时将当前元素插入; 如果是找最小的K个数,那么就和容器中最大的元素比较。同理。 容器用哪个呢? 容器选择用set,set本身就是排序的,始终自动保持排序。那么用迭代器就可以找到最大或者最小的元素。 使用这种方法,时间...

Hunter的博客 974

ROS-Industrial :simple_message

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1. 概述2. 协议(Protocol)3. HEADER解析3.1 MSG_TYPE3.2 COMM_TYPE3.3 REPLY CODE 1. 概述 Simple_Message是ROS-Industrial的一部分,定义了用于与工业机器人控制器通信的简单消息连接协议。另外还包括处理连接受限系统的处理器和管理器类。 2. 协议(Protocol) 简单消息(simplemessage)协议定义了ROS的驱动层和机器人控制器之.

flsxyw的博客 780

codeup 问题 A: 求第k大数

codeup 问题 A: 求第k大数 emmm复习了下STL然后投机取巧用set写了一下,仅参考。 #include <bits/stdc++.h> using namespace std; int main() { int n, m; while (cin >> n >> m) { multiset<int> b; int x; for (int i = 0; i < n; ++i

记录 244

scratch绘制四个三角形 2024年6月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

​ scratch绘制四个三角形 一、题目要求 2024年6月电子学会图形化编程Scratch等级考试二级真题 1、准备工作 1.保留默认角色小猫; 2.添加背景Stars。 2、功能实现 1 .隐藏角色小猫,设置画笔裙始位置为(0,0),画笔颜色为黄色,画笔的粗细为5; 2. 点击绿旗,绘制如下图所示图形,三角形的边长为50。 二、案例分析 1、角色分析 角色:小猫 2、背景分析 背景:Stars背景 3、前期准备 1. 保留默认的小猫不变 ​

青少年编程学习指导 1717

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 921

STL求第k大的元素

Description 现在有两个数组 AA 和 BB, 分别包含 xx 与 yy 个元素。 定义一个新的数组 CC, CC 中包含 x×yx×y 个元素,为 AA 中所有元素除以 BB 中所有元素。 即 新集合为 {c∣c=ab,a∈A,b∈B}{c∣c=ab,a∈A,b∈B} 。特殊地,CC 为多重集合。 请求 CC 数组的第 kk 大数。 I

The_star_is_at的博客 1994

1.2、基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

基于卷积神经网络(CNN)的车牌自动识别系统(matlab)

XU157303764的博客 2911

求第K大数[STL:nth_element]

#include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define INF 0x7FFFFFFF #define INT_MIN -(1<<31) #define eps 10^(-6) #define Q

某科学的程序员 1474

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

2833 The Average 求数组的前k小、大数 最大堆,最小堆 STL

The AverageTime Limit: 6000MS Memory Limit: 10000KTotal Submissions: 7095 Accepted: 2184Case Time Limit: 4000MSDescriptionIn a speech contest, when a contestant finishes his speech, the judges will then grade his performance. The staff remove the highest g

kongming_acm的专栏 830

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

hdu 6040 Hints of sd0061[2017 Multi-University Training Contest - Team 1] [STL]

题目链接 题意: 求a数组的第b[i]大数 分析: (1)首先要了解c++中求第k大数的STL函数nth_element(start,start + n, end); 这个函数可以使数组第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的. 复杂度为O(n). (2

hint 306

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

杭电 4006 multiset 妙用

用stl可以解决。。题目: The kth great number Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 2574Accepted Submission(s): 1119 Proble...

weixin_30929295的博客 181

【STL】求无序数组第K大之nth_element方法

调用:nth_element(a,a+k,a+n); 返回值:无返回值。 功能:函数只是把下标为k的元素放在了正确位置,对其它元素并没有排序当然k左边元素都小于等于它,右边元素都大于等于它,所以可以利用这个函数快速定位某个元素。 那求第k大时呢?我们可以转化成求第n-k+1小,此时下标应该是n - k,也可以定义比较函数,具体看下面示例。 举例:nth_element(a,a+2,a+9),将下标...

憨憨的博客 316

求无序数组的第k大数

给你一个无序数组,求第k大数是多少 c++&lt;functional&gt;库里的函数nth_element(首地址,首地址+k-1,首地址+数组长度); 时间复杂度O(n) 例: #include&lt;algorithm&gt; #include &lt;iostream&gt; #include&lt;cstring&gt; #include &lt;cstdio&gt; #i...

lt的博客 494

c++求区间第k大数_寻找第K大的数的方法总结

今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。解法1: 我们可以对这个乱序数组按照从大到小先行排序,然...

weixin_39830588的博客 2784

第K大数问题

“第/前k大数问题”指的是在长度为n(n>=k)的乱序数组S中找出从大到小顺序的第k个数的问题(当然类似地也有“第K小数问题”)。下面是几种常见解决方法。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,排序方法可以根据实际情况选择,最优情况是O(n*logn),然后取出前k大,总的时间复杂度应为O(n*logn + k)。 解法2: 利用选择排序或交互排序,K次选择后就可以得到

会思考的蜗牛 1049

求前K个最大数,或第K个最大数或第K大频率的单词类似问题小结

求前K个最大数,最小数,第K个最大数,或者 出现频率为第K大的单词是哪个 此类问题,首先想到的就是排序,但是求第K最大而已,并不要求完全有序,所以 想到了 大顶堆 和小顶堆 我们可以用到 优先级队列 priority_queue,它实际上是一个队列,但是它的功能是始终保持队首元素是当前元素的最大值 定义:priority_queue<Type, Container, Functional...

Jared的博客 565

P1923 求第 k 小的数【排序】

输入n1≤n5000000且n为奇数)个数字ai​1≤ai​109),输出这些数字的第k小的数。最小的数是第0小。请尽量不要使用来写本题,因为本题的重点在于练习分治算法。

海岛Blog 1025

[蓝桥杯][算法训练] 区间k大数查询

蓝桥杯 ALGO-1 算法训练 区间k大数查询 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行...

cp0328的博客 3305

排序——求第 k 小数

排序——求第 k 小数 题目描述 输入 n (n < 5000000 且 n 为奇数) 个数字 ai (0 < ai <109),输出这些数字的第 k 小的数。最小的数是第 0 小。 输入格式 无 输出格式 无 输入输出样例 输入样例 5 1 4 3 2 1 5 输出样例 2 分析 这题可以使用STL库中的 nth_element() 方法,nth_element()方法默认是求区间第 k 小。 #include<bits/stdc++.h> using namespace s

linjiayina的博客 220

ZZULIOJ.2116: 区间k大数查询

2116: 区间k大数查询 题目描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出 总共输出m行,每行一个数,表示询问的答案...

八百标兵奔北坡的博客 382
上一篇: 几个关于多线程笔试题
下一篇: 二叉查找树转双向链表(笔试)
七绝乌梭
博客等级 码龄18年 5粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值