Leetcode 215 - Kth Largest Element in an Array(二分)
来源:互联网 发布:数据库数据太多 编辑:程序博客网 时间:2024/06/05 16:22
题意
求一个未排序数组的第k大。
思路
算法1
先排序,然后直接返回第k大即可。
算法2
期望时间为
其基本思想就是基于快排。
首先,我们选择一个观察哨x,将
然后,如果x此时的位置
否则, 如果
否则, 要求的元素在[pos + 1, r]之间。
在算导第三版的P120-P122有对该算法时间复杂度的证明。
代码
class Solution {public: //reverse order int partition(vector<int>& a, int l, int r) { int x = a[r], i = l - 1; for (int j = l; j < r; j++) { if (a[j] >= x) swap(a[++i], a[j]); } swap(a[++i], a[r]); return i; } int KthNum(vector<int>& a, int l, int r, int k) { while (l <= r) { int m = partition(a, l, r); if (m + 1 == k) return a[m]; if (m < k) l = m + 1; else r = m - 1; } return 0; } int findKthLargest(vector<int>& nums, int k) { int n = nums.size(); return KthNum(nums, 0, n - 1, k); }};
0 0
- Leetcode 215 - Kth Largest Element in an Array(二分)
- LeetCode(215) 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
- 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
- 算法训练 结点选择 蓝桥杯
- 409. Longest Palindrome | 判断能组成的最长回文
- 求一个连续子序列的和的最大值
- Android快速开发,十个最常用的框架
- 4000: [TJOI2015]棋盘
- Leetcode 215 - Kth Largest Element in an Array(二分)
- BZOJ 2527: [Poi2011]Meteors
- mysql ERROR 1040: Too many connections
- Git(2)/Git安装
- Linux下MySQL数据库常用基本操作
- ZooKeeper 常用应用场景原理详解
- [XJB研究] [分块] 关于分块时间复杂度的证明
- react
- AndroidStudio中的appcompat在哪? AndroidStudio中的appcompat-v7的文件位置