leetcode 382 Linked List Random Node C++
来源:互联网 发布:韩氏父子 圆号网络 编辑:程序博客网 时间:2024/05/16 12:44
这个题因为不知道n是多大,不然直接对n取余即可。
所以这个题要用到蓄水池算法。
蓄水池算法编程珠玑上面有。
在不知道有多少个数的情况下,取出k个数,且每个数被取到的概率都相同。
第m个对象被选中的概率=选择m的概率*(其后元素不被选择的概率+其后元素被选择的概率*不替换第m个对象的概率),即
这道题的k就是1,如果不是1的话可以用
rand()%i<k来代替,当然替换的地方也要改动一下。
Solution(ListNode* head) { p = head; } /** Returns a random node's value. */ int getRandom() { // srand((int)time(0)); int val = p->val; ListNode *tmp = p->next; for(int i = 2;tmp;i++){ if(rand()%i == 0) val = tmp->val; tmp = tmp->next; } return val; }
另外注意这道题必须要用伪随机数才能过,真随机数过不了。。。
也是,真随机数没法判断了。
0 0
- LeetCode:382 Linked List Random Node
- LeetCode #382: Linked List Random Node
- leetcode 382 Linked List Random Node C++
- LeetCode[382] Linked List Random Node
- [leetcode][382] Linked List Random Node
- LeetCode 382 Linked List Random Node
- 【Leetcode】Linked List Random Node
- LeetCode - Linked List Random Node
- [leetcode]-Linked List Random Node
- Leetcode Linked List Random Node C++(蓄水池抽样算法)
- LeetCode 382. Linked List Random Node 题解(C++)
- [382]Linked List Random Node
- leetcode: Reservoir Sampling:Linked List Random Node(382)
- LeetCode 382 Linked List Random Node (蓄水池算法 推荐)
- LeetCode:382 Linked List Random Node蓄水池抽样算法
- 边刷leetcode边学编程-382 Linked List Random Node
- [leetcode] 382. Linked List Random Node
- <LeetCode OJ> 382. Linked List Random Node
- Linux系统中电源管理框架详解
- Android Camera 通过V4L2与kernel driver的完整交互过程
- 2016/8/31 求逆序数+约瑟夫杀人环问题
- MySQL 5.7 64位 Windows安装指南
- Po学校——考试一
- leetcode 382 Linked List Random Node C++
- Netty解决粘包问题(2) 定长填充
- 详细“企业库”编写流程
- MkDocs项目文档生成器(一)
- java字符输入流与输出流
- 深度分析如何在Hadoop中控制Map的数量
- 01背包 完全背包 多重背包
- android中的表格,固定第一行和第一列,使用fragment显示
- 斐波那契数列