215. Kth Largest Element in an Array
2018-01-13 11:32
330 查看
题目: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输出对应下标位置的值。代码实现如下:
另一种方法就是没有必要将所有的元素排序,使用select algorithm,具体代码实现如下:
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[nums.size()-k]; } };
另一种方法就是没有必要将所有的元素排序,使用select algorithm,具体代码实现如下:
class Solution { public: int partition(vector<int>& nums, int lo, int hi) { int num = nums[lo]; while (lo < hi) { while (lo < hi && nums[hi] >= num) hi--; if (lo < hi) swap(nums[hi], nums[lo]); while (lo < hi && nums[lo] <= num) lo++; if (lo < hi) swap(nums[hi], nums[lo]); } nums[lo] = num; return lo; } int findKthLargest(vector<int>& nums, int k) { k = nums.size()-k; int lo = 0, hi = nums.size()-1; while (lo < hi) { int j = partition(nums, lo, hi); if (j < k) lo = j+1; else if (j > k) hi = j-1; else break; } return nums[k]; } };
相关文章推荐
- 【LeetCode】215. Kth Largest Element in an Array (2 solutions)
- leetCode刷题归纳-Divide and Conquer(215. Kth Largest Element in an Array)
- Week2 215. Kth Largest Element in an Array
- [算法分析与设计] leetcode 每周一题: 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- LeetCode *** 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- leecode 解题总结:215. Kth Largest Element in an Array
- LeetCode OJ 215. Kth Largest Element in an Array 堆排序求解
- [leetcode] 215. Kth Largest Element in an Array
- leetcode 215. Kth Largest Element in an Array | Java最短代码实现
- 215. Kth Largest Element in an Array(divide and conquer)
- 【leetcode】215. Kth Largest Element in an Array
- LeetCode 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array 暴力-堆排序-快速排序
- 215. Kth Largest Element in an Array
- LeetCode:215. Kth Largest Element in an Array
- 215. Kth Largest Element in an Array
- leetcode_middle_57_215. Kth Largest Element in an Array