💡 LeetCode题解:打乱数组(Shuffle an Array)
🧩 题目描述
设计一个支持以下操作的数据结构:
- 初始化:使用一个整数数组
nums
初始化对象,数组中的元素无重复。 - 重置:将数组重置为其最初的状态并返回。
- 打乱:返回数组的随机打乱结果,要求所有的排列都是等可能出现的。
示例:
输入:
nums = [1, 2, 3]
操作:
Solution solution = new Solution(nums);
solution.shuffle(); // 可能返回 [3,1,2]
solution.reset(); // 返回 [1,2,3]
solution.shuffle(); // 可能返回 [1,3,2]
🧠 解题思路分析
本题的关键在于:
- 如何实现一个“真正随机”的打乱?
- 如何确保打乱后的每种排列是等概率的?