215. Kth Largest Element in an Array

2018/07/13 leetcode 共 570 字,约 2 分钟

title

problem link

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.

Example 1:

Input: [3,2,1,5,6,4] and k = 2
Output: 5
Example 2:

Input: [3,2,3,1,2,4,5,5,6] and k = 4
Output: 4

Note:

  • You may assume k is always valid, 1 ≤ k ≤ array’s length.

solution

找第k大,堆排序O(klogk)


class Solution {
public:
	int findKthLargest(vector<int>& nums, int k) {
		priority_queue<int, vector<int>, less<int>> pq;
		for (auto it : nums) {
			pq.push(it);
			while (pq.size() > k) {
				pq.pop();
			}
		}
		return pq.top();
	}
};

排序,O(nlogn)

  • 省略

快速选择 :时间复杂度 O(N),空间复杂度 O(1)

Search

    Table of Contents