diff --git a/leetcode/0384.Shuffle-an-Array/384.Shuffle an Array.go b/leetcode/0384.Shuffle-an-Array/384.Shuffle an Array.go new file mode 100644 index 00000000..54190842 --- /dev/null +++ b/leetcode/0384.Shuffle-an-Array/384.Shuffle an Array.go @@ -0,0 +1,28 @@ +package leetcode + +import "math/rand" + +type Solution struct { + nums []int +} + +func Constructor(nums []int) Solution { + return Solution{ + nums: nums, + } +} + +/** Resets the array to its original configuration and return it. */ +func (this *Solution) Reset() []int { + return this.nums +} + +/** Returns a random shuffling of the array. */ +func (this *Solution) Shuffle() []int { + arr := make([]int, len(this.nums)) + copy(arr, this.nums) + rand.Shuffle(len(arr), func(i, j int) { + arr[i], arr[j] = arr[j], arr[i] + }) + return arr +}