LeetCode: Kth Largest Element in Array
来源:互联网 发布:淘宝钻石等级可以买吗 编辑:程序博客网 时间:2024/06/05 11:16
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
解题分析:
首先我们可以很简单的想到一种解决方法,即先排序,然后再根据索引获取到第k大的值
代码如下:
class Solution {public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); return nums[k - 1]; }};
但是这种方法的时间复杂度至少为O(nlogn),并不是最好的方法,这里简单讲一下另外一种效率更高的算法。我们使用快排分治的思想,对数据进行Partition操作,如果返回的索引刚好是k-1,则找到,否则,分而治之。这种方法的时间复杂度为O(n)。
代码如下:
class Solution { public: int partition(vector<int>& nums, int left, int right) { int pivot = nums[left]; int l = left + 1, r = right; while (l <= r) { if (nums[l] < pivot && nums[r] > pivot) swap(nums[l++], nums[r--]); if (nums[l] >= pivot) l++; if (nums[r] <= pivot) r--; } swap(nums[left], nums[r]); return r; } int findKthLargest(vector<int>& nums, int k) { int left = 0, right = nums.size() - 1; while (true) { int pos = partition(nums, left, right); if (pos == k - 1) return nums[pos]; if (pos > k - 1) right = pos - 1; else left = pos + 1; } }};
阅读全文
0 0
- Leetcode Kth Largest Element in an Array
- Leetcode: Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- [LeetCode] Kth Largest Element in an Array
- [leetcode] Kth Largest Element in an Array
- leetcode--Kth Largest Element in an Array
- #leetcode#Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- 【Leetcode】Kth Largest Element in an Array
- Leetcode: Kth Largest Element in an Array
- Kth Largest Element in an Array -- leetcode
- [Leetcode]Kth Largest Element in an Array
- [LeetCode]Kth Largest Element in an Array
- *LeetCode-Kth Largest Element in an Array
- LeetCode----Kth Largest Element in an Array
- LeetCode Kth Largest Element in an Array
- leetcode-Kth Largest Element in an Array
- LeetCode -- Kth Largest Element in an Array
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- eclipse背景设置什么颜色缓解眼睛疲劳之一
- ierport JasperReport 日期类型java.sql.Timestamp判断是否为空 ($F{date}==null?"":String.valueOf($F{date}.getYear
- Namenode 和 Datanode
- ML_W8_Anomaly Detection_Density Estimation
- LeetCode: Kth Largest Element in Array
- Spring Data MongoDB :基本文档查询
- 高性能可扩展mysql(用户模块设计,分区表使用)
- hibernate session操作
- eCos打印UTC时间
- JAVA调试技巧
- 【SpringMVC】@Controller和@RequestMapping注解说明
- 如何导出微信语音为mp3
- ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结