382. Linked List Random Node
来源:互联网 发布:淘宝上的游侠9账号 编辑:程序博客网 时间:2024/05/12 23:49
Given a singly linked list, return a random node's value from the linked list. Each node must have thesame probability of being chosen.
Follow up:
What if the linked list is extremely large and its length is unknown to you? Could you solve this efficiently without using extra space?
Example:
// Init a singly linked list [1,2,3].ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);Solution solution = new Solution(head);// getRandom() should return either 1, 2, or 3 randomly. Each element should have equal probability of returning.solution.getRandom();等概率随机返回列表数据
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { private ListNode list; private int len; /** @param head The linked list's head. Note that the head is guaranteed to be not null, so it contains at least one node. */ public Solution(ListNode head) { list = head;len = 0;ListNode p = head;while (p != null) {p = p.next;len++;} } /** Returns a random node's value. */ public int getRandom() { ListNode p = list;int random = (int) (Math.random() * len);while (p != null && random > 0) {p = p.next;random--;}return p == null ? 0 : p.val; }}
0 0
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node**
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- Linked List Random Node
- 数据挖掘产品 IBM SPSS Modeler 新手使用入门
- Red Hat 6.5 安装 samba
- log4j学习
- 使用pm2管理node进程
- ios中 new与alloc/init 的区别
- 382. Linked List Random Node
- JSON基础理解
- 华为oj 密码验证合格程序
- 寻找缺少的整数
- Android TextView两端对齐、文本两端对齐
- getopts的用法
- 查看Android设备的CPU架构信息
- MySQL+InnoDB semi-consitent read原理及实现分析
- SwipeRefreshLayout的事件处理