leetcode: Reservoir Sampling:Linked List Random Node(382)
2016-08-31 14:45
405 查看
Given a singly linked list, return a random node’s value from the linked list. Each node must have the same 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:
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();
class Solution { ListNode* hd; public: /** @param head The linked list's head. Note that the head is guanranteed to be not null, so it contains at least one node. */ Solution(ListNode* head) : hd(head) {} /** Returns a random node's value. */ int getRandom() { ListNode* node = hd; int cnt = 0, randVal = 0; while(node) { if(rand() % (++cnt) == 0) randVal = node->val; node = node->next; } return randVal; } }; /** * Your Solution object will be instantiated and called as such: * Solution obj = new Solution(head); * int param_1 = obj.getRandom(); */
相关文章推荐
- 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[382] Linked List Random Node
- LeetCode 382 Linked List Random Node (蓄水池算法 推荐)
- LeetCode:382 Linked List Random Node蓄水池抽样算法
- leetcode382 Linked List Random Node java
- 边刷leetcode边学编程-382 Linked List Random Node
- leetcode 382 Linked List Random Node C++
- LeetCode 382: Linked List Random Node
- Leetcode: Linked List Random Node
- [leetcode]-Linked List Random Node
- 382. Linked List Random Node
- [382]Linked List Random Node
- 382. Linked List Random Node
- [leetcode]-Linked List Random Node
- 382. Linked List Random Node
- 382. Linked List Random Node
- [leetcode]-Linked List Random Node