[LintCode]5.第k大元素
来源:互联网 发布:淘宝店升级天猫店 编辑:程序博客网 时间:2024/04/30 07:47
在数组中找到第k大的元素
注意事项
你可以交换数组中的元素的位置
给出数组 [9,3,2,4,8]
,第三大的元素是 4
给出数组 [1,2,3,4,5]
,第一大的元素是 5
,第二大的元素是 4
,第三大的元素是 3
,以此类推
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) { return quickSort(k,nums,0,nums.size()-1); } //对从left到right的元素进行从大到小的排序 int quickSort(int k,vector<int> nums,int left,int right){ int i = left, j = right; int temp= nums[i]; while(i<j){ //下面这个循环完成了一趟排序,将数组中小于temp的元素放在右边,大于的放左边 while(i<j && nums[j]<=temp) j--;//从右往左扫描找到一个大于temp的元素 if(i<j){ nums[i]=nums[j];//放在temp左边 i++;//i指针右移一位 } while(i<j && nums[i]>temp) i++;//从左往右扫描找到一个小于temp的元素 if(i<j){ nums[j]=nums[i];//放在temp右边 j--;//j指针左移一位 } } //nums[i]=temp;//将temp指针放在最终位置 if(i == k -1){ return temp; }else if(i< k-1){ return quickSort(k,nums,i+1,right);//递归的对temp右边的元素进行排序 }else{ return quickSort(k,nums,left,i-1);//递归的对temp左边的元素进行排序 } } };
阅读全文
0 0
- [LintCode]5.第k大元素
- Lintcode 5. 第k大元素
- LintCode 第K大元素
- LintCode-第k大元素
- 【LintCode】第k大元素
- LintCode 5 第K大元素
- LintCode Python 第k大元素
- LintCode 中位数/第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大元素
- #pragma once用法总结
- ajax无刷新分页效果
- FIREWALLD
- android屏幕适配,自动生成不同的dimens.xml详解
- 异或——LibreOJ6087 毒瘤题/LibreOJ6232 毒瘤题加强版
- [LintCode]5.第k大元素
- Leetcode# 7. Reverse Integer(位运算)
- app.json中未配置
- HDU 6153
- 树的邻接表储存与遍历,给自己留个成长记录吧
- Jobdu1113 二叉树
- listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
- Linux 修改环境变量
- 萌新的linux之旅25