前言
欢迎大家积极在评论区留言发表自己的看法,知无不言,言无不尽,养成每天刷题的习惯,也可以自己发布优质的解题报告,供社区一同鉴赏,吸引一波自己的核心粉丝。
今天是五月集训第二十一天:堆(优先队列)🔥🔥🔥🔥🔥
一、练习题目
2099. 找到和最大的长度为 K 的子序列
1792. 最大平均通过率
1499. 满足不等式的最大值
2163. 删除元素后和的最小差值
二、未完待续
2022-05-21 20:18
记录下今天的题目好难,就看懂了一题,还得看下堆的知识,占个坑,一点点补上了。
三、算法思路
- 1、2099. 找到和最大的长度为 K 的子序列:😢
- 2、1792. 最大平均通过率:😢
- 3、1499. 满足不等式的最大值:😢
- 4、2163. 删除元素后和的最小差值:😢
四、源码剖析
// 2099. 找到和最大的长度为 K 的子序列
class Solution {
class Pair{
public:
int val;
int idx;
Pair() {}
Pair(int v, int i) : val(v), idx(i) {}
bool operator < (const Pair& o) const {
return val < o.val;
}
};
public:
vector<int> maxSubsequence(vector<int>& nums, int k) {
priority_queue<Pair> q;
vector<Pair> t;
vector<int> c;
for(int i = 0; i < nums.size(); ++i) {
q.push(Pair(nums[i], i));
}
while(k--) {
t.push_back(q.top());
q.pop();
}
sort(t.begin(), t.end(), [&](const Pair& a, const Pair& b){
return a.idx < b.idx;
});
c.clear();
for(int i = 0; i < t.size(); ++i) {
c.push_back(t[i].val);
}
return c;
}
};
// 1792. 最大平均通过率
- 1、
// 1499. 满足不等式的最大值
- 1、
// 2163. 删除元素后和的最小差值
- 1、