problem0382

package
v0.0.0-...-899dd15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2020 License: MIT Imports: 2 Imported by: 0

README

382. Linked List Random Node

题目

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:

  1. What if the linked list is extremely large and its length is unknown to you?
  2. 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();

解题思路

见程序注释

运气好

100

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ListNode

type ListNode = kit.ListNode

type Solution

type Solution struct {
	// contains filtered or unexported fields
}

Solution 是需要设计的数据结构 Definition for singly-linked list.

type ListNode struct {
    Val int
    Next *ListNode
}

func Constructor

func Constructor(head *ListNode) Solution

Constructor 构建 Solution head is The linked list's head. Note that the head is guaranteed to be not null, so it contains at least one node. */

func (*Solution) GetRandom

func (s *Solution) GetRandom() int

GetRandom returns a random node's value. */

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL