LeetCode Top Interview Questions 384. Shuffle an Array (Java版; Meidum)
题目描述
Shuffle a set of numbers without duplicates.
Example:
// Init an array with set 1, 2, and 3.
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned.
solution.shuffle();
// Resets the array back to its original configuration [1,2,3].
solution.reset();
// Returns the random shuffling of array [1,2,3].
solution.shuffle();
classSolution{private Random random;int[] ori;int[] nums;publicSolution(int[] nums){
ori = Arrays.copyOf(nums, nums.length);
random =newRandom();this.nums = nums;}/** Resets the array to its original configuration and return it. */publicint[]reset(){
nums = Arrays.copyOf(ori, ori.length);return nums;}/** Returns a random shuffling of the array. */publicint[]shuffle(){//洗牌算法, 牢记:n张牌的洗牌结果应该有n!种, 每种结果都是等可能int n = nums.length;for(int i=n-1; i>=0; i--){int index = random.nextInt(i+1);swap(nums, i, index);}return nums;}privatevoidswap(int[] arr,int i,int j){int tmp = arr[i];
arr[i]= arr[j];
arr[j]= tmp;}}/**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(nums);
* int[] param_1 = obj.reset();
* int[] param_2 = obj.shuffle();
*/
LeetCode Top Interview Questions 384. Shuffle an Array (Java版; Meidum)
welcome to my blogLeetCode Top Interview Questions 384. Shuffle an Array (Java版; Meidum)题目描述Shuffle a set of numbers without duplicates.Example:// Init an array with set 1, 2, and 3.int[] nums...