堆相關 215 陣列中的第K個最大元素

2021-10-10 06:49:27 字數 424 閱讀 2968

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。

示例 1:

輸入: [3,2,1,5,6,4] 和 k = 2

輸出: 5

示例 2:

輸入: [3,2,3,1,2,4,5,5,6] 和 k = 4

輸出: 4

我們可以使用最小堆來解決,乙個個遍歷原陣列的值,新增到堆中,如果堆中元素的個數小於等於k的時候,我們就往堆中新增,新增之後如果堆中元素個數大於k的時候,我們就把最頂端的元素給移除掉,因為是最小堆,所以移除的就是堆中最小的值

public int findkthlargest(int nums, int k) 

return queue.peek();

}

215。陣列中第K個最大元素 堆實現

class solution def findkthlargest self,nums list int k int int 堆排序思想 defheapify array,start,end while true max pos start 初始化最大值所在位置為目標所在 if start 2 1 ...

215。陣列中第K個最大元素 堆實現

class solution def findkthlargest self,nums list int k int int 堆排序思想 def heapify array,start,end while true max pos start 初始化最大值所在位置為目標所在 if start 2 1...

LeetCode 215 陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...