力扣刷題(python)50天——第四十天:數組中的第k個最大元素

力扣刷題(python)50天——第四十天:數組中的第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 ≤ k ≤ 數組的長度。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

方法

最簡單最直接的方法,將數組排序後返回某項。

解答

nums.sort(reverse=True)
        return nums[k-1]

不過當然,時間複雜度爲NlogN,空間複雜度爲常數。

執行結果

在這裏插入圖片描述

提升:

1.利用heap庫中的堆進行操作

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/solution/shu-zu-zhong-de-di-kge-zui-da-yuan-su-by-leetcode/

2.快速選擇算法:
快速排序:
在這裏插入圖片描述
由此爲基礎,快速選擇:

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/solution/shu-zu-zhong-de-di-kge-zui-da-yuan-su-by-leetcode/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章