博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Algorithm] 5. Kth Largest Element
阅读量:5035 次
发布时间:2019-06-12

本文共 2241 字,大约阅读时间需要 7 分钟。

Description

Find K-th largest element in an array.

Example

In array [9,3,2,4,8], the 3rd largest element is 4.

In array [1,2,3,4,5], the 1st largest element is 5, 2nd largest element is 4, 3rd largest element is 3 and etc.

Challenge

O(n) time, O(1) extra memory.

Notice

You can swap elements in the array

Answer

1     /** 2      * @param n: An integer 3      * @param nums: An array 4      * @return: the Kth largest element 5      */ 6     int kthLargestElement(int n, vector
&nums) { 7 // find out the kth largest number in an array. 8 int temp=0; 9 for(int i=1; i<=n; i++)10 {11 for(int j=0; j
= nums[j+1])15 {16 temp = nums[j];17 nums[j] = nums[j+1];18 nums[j+1] = temp;19 }20 }21 }22 23 return nums[nums.size()-n];24 }

Better Solution

1     /** 2      * @param n: An integer 3      * @param nums: An array 4      * @return: the Kth largest element 5      */ 6       7     int quick_sort(vector
&nums, int l, int r) 8 { 9 int key=nums[l];10 while(l
= key) && (l
&nums) {23 // Using qsort method to find the kth largest number.24 if(n>nums.size() || n==0 || nums.size()==0) return -1;25 26 int left=0, right=nums.size()-1, k=nums.size()-n, pivot=0;27 28 while(true){29 pivot = quick_sort(nums, left, right);30 if(pivot==k){31 return nums[k];32 }else if(pivot

 

Best Solution

1     /** 2      * @param n: An integer 3      * @param nums: An array 4      * @return: the Kth largest element 5      */ 6     int kthLargestElement(int n, vector
&nums) { 7 // Using priority queue to solve it. 8 if(n>nums.size() || n==0 || nums.size()==0) return -1; 9 10 priority_queue
, greater
> pri_queue;11 for(int i=0; i
pri_queue.top() )18 {19 pri_queue.pop();20 pri_queue.push(nums[i]);21 }22 }23 24 return pri_queue.top();25 }

Tips

It is a good way to use STL container(priority queue) to solve the problem.

 

 

转载于:https://www.cnblogs.com/jjlovezz/p/9936565.html

你可能感兴趣的文章
JS面向对象
查看>>
excel VLOOKUP函数的用法
查看>>
设计模式
查看>>
orm介绍
查看>>
一个简单程序快速入门JDBC
查看>>
DBA_Oracle基本体系内存和进程结构(概念)
查看>>
unisynedit 在Delphi 2010下的编译问题
查看>>
每日定理3
查看>>
用单链表结构实现算法2.2的程序
查看>>
matlab取整
查看>>
SQL递归查询
查看>>
在公司就职时应该注意的事项
查看>>
springMVC整合jedis+redis
查看>>
As,is含义?using 语句
查看>>
Python基础之 一 文件操作
查看>>
后台调用前台与js方法互调
查看>>
LAMP系统优化
查看>>
RHEL6 学习:使用 cryptsetup 给分区加密
查看>>
安卓TabLayout+ViewPager实现切页
查看>>
谈一谈Python的上下文管理器
查看>>