linked list가 주어지면 Nodes 중 랜덤으로 node's value를 출력하는 getRandom함수를 만들어라.
ex)
linked list : {"val":1,"next":{"val":2,"next":{"val":3,"next":null}}}getRandom() -> 1
getRandom() -> 3
getRandom() -> 3
getRandom() -> 2
node'value를 랜덤하게 출력해주는 getRandom 함수를 만드는 문제이다.
getVal()
)Math.random()
을 이용해 인덱스를 랜덤으로 선택해서 출력한다. (getRandom()
)문제에서
Solution
을 생성자함수로 작성했고getRandom
을 Solution의 메소드로 작성했기 때문에 Solution의 프로퍼티(this.head
,this.valList
)를 메소드에 이용해서 해결했다.
var Solution = function(head) {
this.head=head
this.valList = this.getVal(head)
};
Solution.prototype.getRandom = function() {
const randomIdx = Math.floor(Math.random()*this.valList.length)
return this.valList[randomIdx]
};
Solution.prototype.getVal = function(root,val=[]){
if(!root) return val
else {
val.push(root.val)
Solution.prototype.getVal(root.next,val)
}
return val
}
역시 알고리즘 괴수 카일