LeetCode in Kotlin

382. Linked List Random Node

Medium

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.

Implement the Solution class:

Example 1:

Input

["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"] 
[[[1, 2, 3]], [], [], [], [], []]

Output:

[null, 1, 3, 2, 2, 3]

Explanation:

Solution solution = new Solution([1, 2, 3]); 
solution.getRandom(); // return 1 
solution.getRandom(); // return 3 
solution.getRandom(); // return 2 
solution.getRandom(); // return 2 
solution.getRandom(); // return 3 
// getRandom() should return either 1, 2, or 3 randomly. Each element should have equal probability of returning.

Constraints:

Follow up:

Solution

import com_github_leetcode.ListNode
import kotlin.random.Random

/*
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
@Suppress("NAME_SHADOWING", "kotlin:S2245")
class Solution(head: ListNode?) {
    private val al: MutableList<Int>

    init {
        var head = head
        al = ArrayList()
        while (head != null) {
            al.add(head.`val`)
            head = head.next
        }
    }

    fun getRandom(): Int {
        /*
        Math.random() will generate a random number b/w 0 & 1.
        then multiply it with the array size.
        take only the integer part which is a random index.
        return the element at that random index.
         */
        val ind = Random.nextInt(al.size)
        return al[ind]
    }
}

/*
 * Your Solution object will be instantiated and called as such:
 * var obj = Solution(head)
 * var param_1 = obj.getRandom()
 */
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy