lintcode-第k大元素-197(堆的实现)
来源:互联网 发布:js调用css3动画 编辑:程序博客网 时间:2024/04/30 07:39
在数组中找到第k大的元素
您在真实的面试中是否遇到过这个题?Yes
样例
以下是一个更加快速的版本
给出数组[9,3,2,4,8],第三大的元素是4
给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
class Solution {public: void insert(vector<int> &heap,int e){ heap.push_back(e); int size=heap.size(); for(int i=size-1;i>0&&heap[i]<heap[(i-1)/2];i=(i-1)/2) swap(heap[i],heap[(i-1)/2]); } void adjust(vector<int> &heap,int e){ heap[0]=e; int c,size=heap.size(); for(int i=0;(c=2*i+1)<size;i=c){ if(c+1<size&&heap[c]>heap[c+1]) ++c; if(heap[i]<heap[c]) break; swap(heap[i],heap[c]); } } int kthLargestElement(int k, vector<int> nums) { int size; if((size=nums.size())<k) return 0; vector<int> heap; for(int i=0;i<k;++i) insert(heap,nums[i]); for(int i=k;i<size;++i){ if(nums[i]>heap[0]){ adjust(heap,nums[i]); } } return heap[0]; }};
以下是一个更加快速的版本
class Solution{public: void insert(vector<int> &heap,int e){ heap.push_back(e); int size=heap.size(); int tmp=heap[size-1]; int i; for(i=size-1;i>0&&tmp<heap[(i-1)/2];i=(i-1)/2) heap[i]=heap[(i-1)/2]; heap[i]=tmp; } void adjust(vector<int> &heap,int e){ heap[0]=e; int c,size=heap.size(); int tmp=heap[0]; int i; for(i=0;(c=2*i+1)<size;i=c){ if(c+1<size&&heap[c]>heap[c+1]) ++c; if(tmp<heap[c]) break; heap[i]=heap[c]; } heap[i]=tmp; } int kthLargestElement(int k, vector<int> nums) { int size; if((size=nums.size())<k) return 0; vector<int> heap; for(int i=0;i<k;++i) insert(heap,nums[i]); for(int i=k;i<size;++i){ if(nums[i]>heap[0]){ adjust(heap,nums[i]); } } return heap[0]; }};
0 0
- lintcode-第k大元素-197(堆的实现)
- LintCode 第K大元素
- LintCode-第k大元素
- 【LintCode】第k大元素
- LintCode 5 第K大元素
- LintCode Python 第k大元素
- [LintCode]5.第k大元素
- LintCode 中位数/第K大元素
- LintCode之5 第k大元素
- Lintcode 5. 第k大元素
- (lintcode)第5题第k大元素
- 『lintcode』第k的元素
- LintCode-剑指Offer-(5)第k大元素
- [LintCode] 第K大元素 Kth Largest Element
- LintCode笔记(12)——第k大元素
- 第k大的元素
- 用堆实现求第K大的数
- Java实现-第K大元素
- WIN32串口编程详解
- HDU 3572Task Schedule(网络流)
- wpa_supplicant子系统分析 android 5.1
- 一致性hash算法
- LeetCode之Compare Version Numbers
- lintcode-第k大元素-197(堆的实现)
- fb_open函数
- python 函数式编程和高阶函数的概念
- Tomcat 使用apr优化
- 1026. 程序运行时间(15)
- 名字的漂亮度
- 插入排序
- JAVA 猜拳小游戏
- 笔试题:cvte第一题二分法求字符串