- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
题目地址:https://leetcode.com/problems/kth-largest-element-in-a-stream/description/
Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element.
Your KthLargest
class will have a constructor which accepts an integer k
and an integer array nums
, which contains initial elements from the stream. For each call to the method KthLargest.add
, return the element representing the kth largest element in the stream.
Example:
int k = 3;
int[] arr = [4,5,8,2];
KthLargest kthLargest = new KthLargest(3, arr);
kthLargest.add(3); // returns 4
kthLargest.add(5); // returns 5
kthLargest.add(10); // returns 5
kthLargest.add(9); // returns 8
kthLargest.add(4); // returns 8
Note:
Youmay assume that nums' length ≥ k-1 and k ≥ 1.
实现一个类,这个类能找出一个数据流中第K大的数。
曾经在亚马逊遇到过的面试题,可惜当时不会,甚至连用堆来实现都没想到。现在知道用堆来实现了。
Python的堆是小根堆,不需要对其进行转换,我们想一想,如果一个堆的大小是k的话,那么最小的数字就在其最前面(即为第k大的数字),只要维护当新来的数字和最前面的这个数字比较即可。
所以我们的工作就是维护一个小根堆,这个小根堆保存的是从第K大的数字到最大的数字。堆的大小即为K。
实现过程比较简单,只要熟悉Python中堆的操作即可。
代码如下:
class KthLargest(object):
def __init__(self, k, nums):
"""
:type k: int
:type nums: List[int]
"""
self.pool = nums
self.size = len(self.pool)
self.k = k
heapq.heapify(self.pool)
while self.size > k:
heapq.heappop(self.pool)
self.size -= 1
def add(self, val):
"""
:type val: int
:rtype: int
"""
if self.size < self.k:
heapq.heappush(self.pool, val)
self.size += 1
elif val > self.pool[0]:
heapq.heapreplace(self.pool, val)
return self.pool[0]
# Your KthLargest object will be instantiated and called as such:
# obj = KthLargest(k, nums)
# param_1 = obj.add(val)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
我一直在研究一个程序,该程序应该在不同的组大小设置下测试快速选择算法的性能。您找到枢轴,算法会将所有元素分成 5 组。它应该找到每个组的中位数,并使用所有组中位数的中位数作为枢轴。我对最小的第 k 部
这problem要求在未排序的非负整数数组中找到第 k 个最小的元素。 这里的主要问题是内存限制:( 这里我们可以使用常量额外空间。 首先,我尝试了一个O(n^2) 方法[没有任何额外的内存],它给了
我想弄清楚 np.partition 函数是如何工作的。例如,考虑 arr = np.array([5, 4, 1, 0, -1, -3, -4, 0]) 如果我调用 np.partition(arr
我有代码可以在 golang 中从列表的最后一个元素中找到第 k 个元素。我写了一个递归函数。当它到达列表的末尾时,它将返回计数为 1 并在进一步的返回中递增。当 count == k 时返回节点值。
题目地址:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目描述 Find the kth
本文关键词:算法题,刷题,Leetcode, 力扣,二叉搜索树,BST,第 k 小的元素,Python, C++, Java 题目地址:https://leetcode.com/problems/k
作为最近的一份工作申请的一部分,我被要求编写一个解决这个问题的代码。 鉴于, n = 围成一圈的人数。 k = 每次计数的人数 每个人都有一个唯一的(递增的)id。从第一个人(最低 id)开始,他们从
在java 8中如何有效地找到第K个最小的?第 K 个最小的是 http://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-ar
n个括号序列由n个"("s和n个")"组成。 一个有效的括号序列定义如下: 你可以找到一种方法来重复删除相邻的一对括号“()”,直到它变空。 例如"(())"是一个有效的括号,你可以把第2和第3位的p
题目地址:https://leetcode.com/problems/kth-largest-element-in-a-stream/description/ 题目描述 Design a clas
我基本上必须编写一个函数,它接受一个数组、一个表示数组中元素的 int n 和一个表示数组中第 k 个最小 int 的 int k (不是第 k 个最小位置)。不允许修改(排序)数组。我花了一段时间试
在算法题“Find the Kth Smallest Element in a BST”中( https://leetcode.com/problems/kth-smallest-element-in
我是一名优秀的程序员,十分优秀!