382. Linked List Random Node
class Solution:
def __init__(self, head: ListNode):
self.head = head
def getRandom(self) -> int:
count = 0
reserve = self.head.val
cur = self.head
while cur:
count += 1
rand = random.randint(1, count)
if rand == count:
reserve = cur.val
cur = cur.next
return reserve
类似的大数据流,要求等概率地取其中k个数,均可以采用“水塘抽样”算法。详细介绍
这篇博客介绍了如何利用‘水塘抽样’算法在大数据流中实现等概率选取k个元素,以解决类似LinkedListRandomNode问题。通过维护一个计数器和当前节点值,循环遍历链表并根据随机数确定保留值,最终返回随机选取的值。此方法适用于需要在大数据集中随机采样的场景。
636

被折叠的 条评论
为什么被折叠?



