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.
题目的意思翻译过来说就是给定一个乱序数组和数字k,在乱序数组中找到第k大的数并输出,这题可以简单排序后直接找到第k大的数,但是为了降低复杂度,我们可以用优先队列的思想,建立一个大顶堆,把前k大的数作为列表抽取出来,然后返回列表的最后一个数字,这便是第k大的数,乍一听好像不简单,但是好在python有heapq库能很好得帮助我们实现上述操作。
代码如下:
from heapq import *
class Solution:
def findKthLargest(self, nums, k):
heap = []
for i in nums:
heappush(heap, i)
print(heap)
return nlargest(k,heap)[k-1]