LeetCode 215. Kth Largest Element in an Array
来源:互联网 发布:js正则过滤表情符号 编辑:程序博客网 时间:2024/06/05 22:53
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.
#include <vector>#include <iostream>#include <queue>using namespace std;// This method is easy but need O(n) memory space and O(n) time complexity.int findKthUsingQueue(vector<int>& nums, int k) { // kth largest equals to (nums.size() - k + 1)th smallest. priority_queue<int, vector<int>, greater<int> > numsQueue; for(int i = 0; i < nums.size(); ++i) { numsQueue.push(nums[i]); } for(int i = 1; i < nums.size() - k + 1; i++) { numsQueue.pop(); } return numsQueue.top();}int partition(vector<int>& nums, int left, int right);// it currently find kth-1 smallest number.int findKth(vector<int>& nums, int first, int last, int k) { int pivot = partition(nums, first, last); if(pivot == k) return nums[pivot]; else if(pivot < k) return findKth(nums, pivot + 1, last, k); else return findKth(nums, first, pivot - 1, k);}// O(n) time complexity and O(1) space.int partition(vector<int>& nums, int left, int right) { int pivotElement = nums[left]; int pivotIndex = left; for(int i = left + 1; i <= right; ++i) { if(nums[i] < pivotElement) { pivotIndex++; swap(nums[i], nums[pivotIndex]); } } swap(nums[pivotIndex], nums[left]); // the index p right now point to the pivot. return pivotIndex;} int main(void) { vector<int> nums{4, 3, 2, 5, 8, 1}; int res = findKthUsingQueue(nums, 2); int res1 = findKth(nums, 0, 5, 5); cout << res1 << endl;}
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
- 阿里云ecs云服务器安装wdcp控制面板教程(推荐CentOS6.5)
- ASP.NET mvc 在视图中使用@helper封装输出代码
- kafka基本命令
- iOS: 在键盘之上显示一个 View
- Android 项目 UI混乱,Button变大,解决方案
- LeetCode 215. Kth Largest Element in an Array
- C#日期时间格式化
- kafka简单安装部署
- 对于undefined reference stderr问题的解决
- 自定义OS, SQL命令提示符
- linux top命令详解
- Android理解:IntentService
- 321
- SVN提交改动时报错You must input more than 5 chars as comment!