1. https://leetcode.com/problems/linked-list-random-node/
  2.  
  3. // Using Reservoir sampling algorithm
  4. // https://discuss.leetcode.com/topic/53812/using-reservoir-sampling-o-1-space-o-n-time-complexity-c/2
  5.  
  6. /**
  7. * Definition for singly-linked list.
  8. * public class ListNode {
  9. * int val;
  10. * ListNode next;
  11. * ListNode(int x) { val = x; }
  12. * }
  13. */
  14. public class Solution {
  15. ListNode h;
  16. java.util.Random rand;
  17.  
  18. /** @param head The linked list's head.
  19. Note that the head is guaranteed to be not null, so it contains at least one node. */
  20. public Solution(ListNode head) {
  21. h = head;
  22. rand = new java.util.Random();
  23. }
  24.  
  25. /** Returns a random node's value. */
  26. public int getRandom() {
  27. if (h == null) {
  28. return 0;
  29. }
  30.  
  31. int ret = h.val;
  32. int i = 1;
  33. ListNode cur = h;
  34. while (cur.next != null) {
  35. cur = cur.next;
  36. i++;
  37. int f = rand.nextInt() % i;
  38. if (f == 0) {
  39. ret = cur.val;
  40. }
  41. }
  42. return ret;
  43. }
  44. }
  45.  
  46. /**
  47. * Your Solution object will be instantiated and called as such:
  48. * Solution obj = new Solution(head);
  49. * int param_1 = obj.getRandom();
  50. */

linked-list-random-node的更多相关文章

  1. [LeetCode] Linked List Random Node 链表随机节点

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  2. LeetCode: Linked List Random Node

    这题参照http://blog.jobbole.com/42550/ 用的蓄水池算法,即更改ans的概率为1/(当前length) /** * Definition for singly-linked ...

  3. Leetcode 382. Linked List Random Node

    本题可以用reservoir sampling来解决不明list长度的情况下平均概率选择元素的问题. 假设在[x_1,...,x_n]只选一个元素,要求每个元素被选中的概率都是1/n,但是n未知. 其 ...

  4. 382. Linked List Random Node

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  5. [Swift]LeetCode382. 链表随机节点 | Linked List Random Node

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  6. Reservoir Sampling-382. Linked List Random Node

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  7. [LeetCode] 382. Linked List Random Node ☆☆☆

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  8. Linked List Random Node -- LeetCode

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

  9. 382 Linked List Random Node 链表随机节点

    给定一个单链表,随机选择链表的一个节点,并返回相应的节点值.保证每个节点被选的概率一样.进阶:如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现?示例:// 初始化一个单链表 ...

  10. [LeetCode] 382. Linked List Random Node 链表随机节点

    Given a singly linked list, return a random node's value from the linked list. Each node must have t ...

随机推荐

  1. Python之路【第九篇】:面向对象进阶

    阅读目录 一. isinstance(obj,cls)和issubclass(sub,super)二. 反射三. __setattr__,__delattr__,__getattr__四. 二次加工标 ...

  2. 异步任务 -- FutureTask

    任务提交 之前在分析线程池的时候,提到过 AbstractExecutorService 的实现: public Future<?> submit(Runnable task) { if ...

  3. 1014 Waiting in Line (30)(30 point(s))

    problem Suppose a bank has N windows open for service. There is a yellow line in front of the window ...

  4. SQL语句之 知识补充

    SQL语句之 知识补充 一.存储过程 运用SQL语句,写出一个像函数的模块,这就是存储过程. 需求: 编写存储过程,查询所有员工 -- 创建存储过程(必须要指定结束符号) -- 定义结束符号 DELI ...

  5. python 对字典"排序"

    对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是 ...

  6. 2-SAT的一些题目

    http://blog.sina.com.cn/s/blog_64675f540100k2xj.html 都一个类型的不是很想写.

  7. hdu 4545 贪心 *

    题意:小明和他的好朋友小西在玩一个新的游戏,由小西给出一个由小写字母构成的字符串,小明给出另一个比小西更长的字符串,也由小写字母组成,如果能通过魔法转 换使小明的串和小西的变成同一个,那么他们两个人都 ...

  8. 【openjudge】 CDQZ challenge 4

    改了三天,提交17次,一定要纪念一下! 1004:Challenge 4 总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  262144kB 描述 给一个长为N的数列 ...

  9. LR下监控windows系统资源方法

    1.          通过客户端与服务器进行网络测试,保证通信畅通.(测试主机本身) 2.          在运行中输入,service.msc打开系统的服务设置,开启服务器端Windows中的如 ...

  10. MySql篇

    CentOS6下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.26. 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | ...