Daily LeetCode Challenge - 382. Linked List Random Node

Min Young Kim·2023년 3월 10일
0

algorithm

목록 보기
89/198

Problem From.

https://leetcode.com/problems/linked-list-random-node/

오늘 문제는 linked list 가 주어졌을때, 각 노드에서 정해진 랜덤 int 를 반환하는 문제였다. 이 문제는 문제의 개념보다 문제의 형식에 맞게 푸는 방법이 더 어려웠던 문제였다.

Node 를 끝까지 탐색하면서 각 node 에서 random 범위를 돌려서 숫자를 반환하게 풀었다.

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
import kotlin.random.Random

class Solution(private val head: ListNode?) {

    private val random = Random
     
    fun getRandom(): Int {
     var node = head   
        var count = 0
        var res = 0
        while (node != null) {
            count++
            if (random.nextInt(count) == 0)
                res = node.`val`
            node = node.next
        }
        return res
            
    }

}
profile
길을 찾는 개발자

0개의 댓글