题目
求出数组中第k大的数字。
我的代码(维持一个k的列表)
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
d=nums[:k]
d.sort()
for i in range(k,len(nums)):
if nums[i]>d[0]:
sign=False
for j in range(1,len(d)):
if nums[i]<=d[j]:
sign=True
d.insert(j,nums[i])
break
if not sign:
d.append(nums[i])
del d[0]
return d[0]
高效代码
使用堆队列的方法,提高了效率。
class Solution:
def findKthLargest(self, nums: List[int], k: int) -> int:
heap = []
for num in nums:
heapq.heappush(heap, num)
if len(heap) > k:
heapq.heappop(heap)
return heapq.heappop(heap)