From 79079c6a084d7a5bb24c6838238865bb9fcf54c7 Mon Sep 17 00:00:00 2001 From: tphyhFighting <2363176358@qq.com> Date: Mon, 22 Nov 2021 16:51:10 +0800 Subject: [PATCH] add: leetcode 0384 readme --- leetcode/0384.Shuffle-an-Array/README.md | 81 ++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 leetcode/0384.Shuffle-an-Array/README.md diff --git a/leetcode/0384.Shuffle-an-Array/README.md b/leetcode/0384.Shuffle-an-Array/README.md new file mode 100644 index 00000000..8d462a8c --- /dev/null +++ b/leetcode/0384.Shuffle-an-Array/README.md @@ -0,0 +1,81 @@ +# [384.Shuffle an Array](https://leetcode-cn.com/problems/shuffle-an-array/) + +## 题目 + +Given an integer array nums, design an algorithm to randomly shuffle the array. All permutations of the array should be equally likely as a result of the shuffling. + +Implement the Solution class: + +- Solution(int[] nums) Initializes the object with the integer array nums. +- int[] reset() Resets the array to its original configuration and returns it. +- int[] shuffle() Returns a random shuffling of the array. + +**Example 1**: + + Input + ["Solution", "shuffle", "reset", "shuffle"] + [[[1, 2, 3]], [], [], []] + Output + [null, [3, 1, 2], [1, 2, 3], [1, 3, 2]] + + Explanation + Solution solution = new Solution([1, 2, 3]); + solution.shuffle(); // Shuffle the array [1,2,3] and return its result. + // Any permutation of [1,2,3] must be equally likely to be returned. + // Example: return [3, 1, 2] + solution.reset(); // Resets the array back to its original configuration [1,2,3]. Return [1, 2, 3] + solution.shuffle(); // Returns the random shuffling of array [1,2,3]. Example: return [1, 3, 2] + +**Constraints:** + +- 1 <= nums.length <= 200 +- -1000000 <= nums[i] <= 1000000 +- All the elements of nums are unique. +- At most 5 * 10000 calls in total will be made to reset and shuffle. + +## 题目大意 + +给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。 + +实现 Solution class: + +- Solution(int[] nums) 使用整数数组 nums 初始化对象 +- int[] reset() 重设数组到它的初始状态并返回 +- int[] shuffle() 返回数组随机打乱后的结果 + +## 解题思路 + +- 使用rand.Shuffle进行数组随机打乱 + +## 代码 + +```go +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 +} +``` \ No newline at end of file