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
}
}