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

2021-10-07 07:31:22 字數 563 閱讀 3837

這裡使用的是快速排序的思想,快排是每一次確定乙個數的位置,左邊的都比它小,右邊的都比他大。

但是直接用快排會需要更多的時間,這裡相當於對快排進行剪枝,把快排中不需要的步驟去掉

每次確定乙個數的位置之後,如果第k個最大元素在左邊,則只對左邊進行搜尋,否則對右邊搜尋

當然,快排中的其他的優化也可以用在這裡,比如取任意三個數中的中數來定位,或者是在搜尋空間小於n=5時進行遍歷,都可以。

class

solution

if(k < r)

return

find

(nums, k, a, r-1)

;else

if(k > l)

return

find

(nums, k, l+

1, b)

;else

return flag;

}int

findkthlargest

(vector<

int>

& nums,

int k)

};

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...

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...

Leetcode215 陣列中的第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...