轻松的编程学习
首页
题库
学习路径
在线商城
能力地图
下载应用
登录 / 注册
菜单
第四步拿它去求 Top-K
👁️ 0 人浏览
💬 0 人评论
❤️ 添加收藏
用前面写好的堆求前 3 大,把结果拼起来输出(用 / 隔开)。
(本题用
g++ -std=c++17 -O0
编译。)
提交你的答案
请登录后提交答案。
去登录
← 第三步从乱序数组直接建堆
交付堆加 Top-K 加调度 →
更多题目
改成"你好,有词"
输出"100 分"
把年龄改成 20
输出学习天数 30
修复:给文字加引号
修复:补上右括号
代码编辑器
语言:
python3
c11
cpp17
Ctrl
+
Enter
运行
👩🏫 AI
▶ 运行代码
重置代码
打印代码
#include <algorithm> #include <iostream> #include <string> #include <utility> #include <vector> using namespace std; string join(const vector<int>& v) { string s; for (size_t i = 0; i < v.size(); i++) s += (i ? "/" : "") + to_string(v[i]); return s; } void sift_down(vector<int>& h, int i, int n) { while (true) { int big = i; int l = 2 * i + 1; int r = 2 * i + 2; if (l < n && h[l] > h[big]) big = l; if (r < n && h[r] > h[big]) big = r; if (big == i) return; swap(h[i], h[big]); i = big; } } int pop_top(vector<int>& h) { int top = h[0]; int last = h.back(); h.pop_back(); if (!h.empty()) { h[0] = last; sift_down(h, 0, (int)h.size()); } return top; } void build_heap(vector<int>& h) { // TODO: 倒着依次下沉 } vector<int> top_k(vector<int> vals, int k) { vector<int> out; // TODO: 建堆之后连弹 k 次 return out; } int main() { cout << join(top_k({17, 24, 15, 13, 23}, 3)) << endl; }
本次输入:
输出:
👩🏫
AI
请登录后使用 AI 老师
×
登录后可获得解题思路、提示与错误分析。
去登录
关闭
🎉
恭喜你,回答正确!
系统判定:正确
我知道了
💬 题目评论
提交
全部评论
全部评论