【LeetCode 506】Relative Ranks(Top K Problem)
来源:互联网 发布:大型企业网络建设方案 编辑:程序博客网 时间:2024/06/07 18:35
/******************************************LeetCode506 Relative Ranks题目:Given scores of N athletes, find their relative ranks and the people with the top three highest scores,who will be awarded medals: "Gold Medal", "Silver Medal" and "Bronze Medal".********************************//***********************思想:从N个数中寻找最大的K个数,利用最小堆实现。********************************/void AdjustDown(vector<int> &scores, vector<int> &heap, int index, int size){int temp = heap[index];for (int ii = 2 * index + 1; ii <= size; ii *= 2){if (ii<size&& scores[heap[ii]]>scores[heap[ii + 1]]){ii++;} if (scores[temp]>scores[heap[ii]]){heap[index] = heap[ii];index = ii;}else{break;}}heap[index] = temp;}void BuildMinHeap(vector<int> &scores, vector<int> &heap){int mid = (heap.size()) / 2;for (int ii = mid; ii >= 0; ii--){AdjustDown(scores, heap, ii, heap.size() - 1);} }void HeapSort(vector<int> &scores, vector<int> &heap){int temp;for (int ii = 0; ii < heap.size(); ii++){temp = heap[0];heap[0] = heap[heap.size() - 1 - ii];heap[heap.size() - 1 - ii] = temp;AdjustDown(scores, heap, 0, heap.size() - ii - 1);}}void TopK(vector<int> scores, int topK){vector<int> heap;for (int ii = 0; ii < topK; ii++){heap.push_back(ii);}BuildMinHeap(scores, heap);for (int ii = topK; ii < scores.size(); ii++){if (scores[ii]>scores[heap[0]]){heap[0] = ii;AdjustDown(scores, heap, 0, heap.size() - 1);}} HeapSort(scores, heap);//输出for (int ii = 0; ii < topK; ii++){cout << heap[ii] << " ";} }
0 0
- 【LeetCode 506】Relative Ranks(Top K Problem)
- leetcode-506-Relative Ranks
- Leetcode #506 Relative Ranks
- Leetcode 506:Relative Ranks
- LeetCode 506 Relative Ranks
- LeetCode 506. Relative Ranks
- [Leetcode] 506. Relative Ranks
- LeetCode:Relative Ranks
- LeetCode-506. Relative Ranks
- leetcode 506. Relative Ranks
- LeetCode 506. Relative Ranks
- 【Leetcode】506. Relative Ranks
- LeetCode | 506. Relative Ranks
- LeetCode Relative Ranks
- [LeetCode]506. Relative Ranks
- leetcode 506. Relative Ranks
- LeetCode之Relative Ranks
- LeetCode 506. Relative Ranks
- SQL2008无法启动,报错"17051"怎么解决
- 基础知识!ASP.Net内置对象 7个
- Lua嵌入iOS/Mac工程
- 【视频】多UE调度以及MCS动态调整的考虑
- UVA11400 简单DP
- 【LeetCode 506】Relative Ranks(Top K Problem)
- python:使用http请求实现phpwind自动登录及发帖
- 基础知识!ASP.NET修饰符
- 2017-02-14 Head First Java 第一章 下
- 错误解决:“GridView1”上同时定义了 DataSource 和 DataSourceID。请移除一个定义。
- C#99课的主要内容
- AdWindows.dll 之 应用于独立程序的Ribbon风格
- 《AngularJS入门与进阶》图书简介
- 使用ADO.NET实现数据的更新