LintCode-第k大元素
来源:互联网 发布:软件求职自我介绍 编辑:程序博客网 时间:2024/04/30 06:37
在数组中找到第k大的元素
您在真实的面试中是否遇到过这个题?Yes
样例
给出数组[9,3,2,4,8],第三大的元素是4
给出数组 [1,2,3,4,5],第一大的元素是5,第二大的元素是4,第三大的元素是3,以此类推
注意
你可以交换数组中的元素的位置
挑战
标签 Expand 要求时间复杂度为O(n),空间复杂度为O(1)
相关题目 Expand
分析:利用快排的思想,不断partition,
代码:
class Solution {public: /* * param k : description of k * param nums : description of array and index 0 ~ n-1 * return: description of return */ int kthLargestElement(int k, vector<int> nums) { // write your code here return findKthLargestElement(k,nums,0,nums.size()-1); } int findKthLargestElement(int k,vector<int>& nums,int start,int end) { if(start==end) return nums[start]; int index = partition(nums,start,end); if(end-index+1==k) return nums[index]; else if(end-index+1>k) return findKthLargestElement(k,nums,index+1,end); else return findKthLargestElement(k-(end-index+1),nums,start,index-1); } int partition(vector<int>&nums,int start,int end) { int x = (start+end)/2; swap(nums[start],nums[x]); int i = start+1; int j = i; while(i<=end&&j<=end) { if(nums[j]<nums[start]) { swap(nums[i],nums[j]); i++; } j++; } swap(nums[start],nums[i-1]); return i-1; }};
0 0
- 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大元素-197(堆的实现)
- LintCode-剑指Offer-(5)第k大元素
- [LintCode] 第K大元素 Kth Largest Element
- LintCode笔记(12)——第k大元素
- lintcode&九章算法——lintcode NO.5 第k大元素 ? 带解决
- 第k大元素
- 第k大元素
- 第k大元素
- Ubuntu:su切换用户时提示 su:认证失败
- “Adb connection Error:远程主机强迫关闭了一个现有的连接。”之我的解决方法。
- 总线设备驱动模型
- MyBatis 基础总结
- 20150818-Android生命周期
- LintCode-第k大元素
- POJ 2186 Popular Cows
- 30 个免费的响应式 HTML5 CSS3 网站模板
- 黑马程序员——视频学习过程5
- 【HDOJ 5400】Arithmetic Sequence
- UI总结之获取各种路径1
- 我认为的学习方法。9.0
- Spring---Spring MVC 应用
- C/C++程序运行时的内存结构