当前位置:网站首页>Power button (LeetCode) 215. The first K largest elements in the array (2022.08.03)
Power button (LeetCode) 215. The first K largest elements in the array (2022.08.03)
2022-08-04 03:03:00 【ChaoYue_miku】
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.
示例 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/kth-largest-element-in-an-array
方法一:快速排序
C++提交内容:
class Solution {
public:
int quickSelect(vector<int>& a, int l, int r, int index) {
int q = randomPartition(a, l, r);
if (q == index) {
return a[q];
} else {
return q < index ? quickSelect(a, q + 1, r, index) : quickSelect(a, l, q - 1, index);
}
}
inline int randomPartition(vector<int>& a, int l, int r) {
int i = rand() % (r - l + 1) + l;
swap(a[i], a[r]);
return partition(a, l, r);
}
inline int partition(vector<int>& a, int l, int r) {
int x = a[r], i = l - 1;
for (int j = l; j < r; ++j) {
if (a[j] <= x) {
swap(a[++i], a[j]);
}
}
swap(a[i + 1], a[r]);
return i + 1;
}
int findKthLargest(vector<int>& nums, int k) {
srand(time(0));
return quickSelect(nums, 0, nums.size() - 1, nums.size() - k);
}
};
边栏推荐
猜你喜欢
怎样提高网络数据安全性
Day13 Postman的使用
Rongyun "Audio and Video Architecture Practice" technical session [complete PPT included]
2022G1工业锅炉司炉考试练习题及模拟考试
案例 | 重庆银行流动数据安全挑战及应对实践
STM8S105k4t6c--------------点亮LED
MySQL查询优化与调优
倒计时2天,“文化数字化战略新型基础设施暨文化艺术链生态建设发布会”启幕在即
2022广东省安全员A证第三批(主要负责人)考试题库及模拟考试
Instance, 038: the sum of the diagonal matrix
随机推荐
How many ways do you know about communication between multiple threads?
new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解
web端动效 lottie-web 使用
0.1 前言
三分建设,七分管理!产品、系统、组织三管齐下节能降耗
STM8S105K4T6------串口发送和接收
ingress 待完善
pytorch applied to MNIST handwritten font recognition
全网没有之一的JMeter 接口测试流程详解
织梦响应式酒店民宿住宿类网站织梦模板(自适应手机端)
What is the source of flinkcdc consuming mysql binlog data without sqltype=delete
STM32-遥感数据处理
There are n steps in total, and you can go up to 1 or 2 steps each time. How many ways are there?
uni-app 从零开始-基础模版(一)
DIY电工维修如何拆卸和安装开关面板插座
Engineering drawing review questions (with answers)
小程序:扫码打开参数解析
一个属于程序员的七夕节!
【原创】启动Win10自带的XPS/OXPS阅读器
系统太多,多账号互通如何实现?