堆
LeetCode刷题分类——堆
阿清~
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题——215. 数组中的第K个最大元素
题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。输入: [3,2,1,5,6,4] 和 k = 2输出: 5代码class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: h = [num for num in nums[:k]] heapq.heapify(h) for原创 2020-07-31 16:14:52 · 92 阅读 · 0 评论 -
347. 前 K 个高频元素
题目给定一个非空的整数数组,返回其中出现频率前 k 高的元素。输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]思路哈希表+堆哈希表保存数组中的每个值以及它的出现频率,Python中用字典实现。维护一个大小为K的最小堆。堆中每个节点保存一个键值对,按照(value,key)的方式保存,可以使得堆是按照value值排序。代码class Solution: def topKFrequent(self, nums: List[int], k: int) -原创 2020-07-31 16:12:01 · 90 阅读 · 0 评论 -
《剑指offer》刷题系列——(五十九)数据流中的中位数
题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例 :输入:[“原创 2020-07-21 10:45:37 · 107 阅读 · 0 评论 -
《剑指offer》刷题系列——(五十八)最小的k个数
题目输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 :输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]思路一、利用快速排序的思想。快速排序的partition函数每次返回一个索引值index,一次排序之后,index左边的数都小于index位置上的数。因此当我们返回index值时,就将它与k-1值比较,如果刚好等于k-1,则直接输出arr数组的前k个元素(索引为0到k-原创 2020-07-20 16:16:49 · 135 阅读 · 0 评论