250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code JS)Shuffle An Array 본문
728x90
반응형
https://leetcode.com/problems/shuffle-an-array/
피셔-예이츠 셔플을 이용해 배열을 섞을 수 있다.
Solution이라는 class를 이용해 reset()과 shuffle()을 구현.
생성자로는 nums 배열을 받고,
original 배열을 통해 reset 시 현재 배열을 원래 배열로 되돌린다.
현재 배열의 상태는 nums라는 배열로 선언했다.
reset() 함수는 단순히 this.nums = [...this.original]로 하여 deep copy를 하여 원래 배열 상태로 되돌린다.
shuffle() 함수는 무작위로 배열을 섞으면 된다.
무작위로 섞는 방법은 피셔-예이츠를 활용.
Math.random과 함께 이용하면 된다.
class Solution{
constructor(nums){
this.original = [...nums];
this.nums = nums;
}
reset() {
this.nums = [...this.original];
return this.nums;
}
shuffle() {
for(let i = this.nums.length - 1; i > 0; i--){
const random = Math.floor(Math.random() * (i + 1));
[this.nums[i], this.nums[random]] = [this.nums[random], this.nums[i]];
}
return this.nums;
}
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code JS)Max Area of Island (0) | 2022.03.07 |
---|---|
(Leet Code JS)Flood Fill (0) | 2022.03.07 |
(Leet Code JS) Populating Next Right Pointers in Each Node (0) | 2022.03.02 |
(Leet Code JS)Triangle (0) | 2022.03.01 |
(Leet Code JS)DI String Match (0) | 2022.02.28 |