题目描述:给你一个整数数组 nums
,设计算法来打乱一个没有重复元素的数组。打乱后,数组的所有排列应该是 等可能 的。实现 Solution
class:
Solution(int[] nums)
使用整数数组nums
初始化对象int[] reset()
重设数组到它的初始状态并返回int[] shuffle()
返回数组随机打乱后的结果
编码实现:
public int init[];
public Solution(int[] nums) {
init=nums;
}
public int[] reset() {
return init;
}
public int[] shuffle() {
int shuffle[]= new int[init.length];
for(int i=0;i<init.length;i++){
shuffle[i]=init[i];
}
Random rd= new Random();
int len=shuffle.length;
for(int i=0;i<len;i++){
int j=rd.nextInt(len-i)+i;
int t=shuffle[i];
shuffle[i]=shuffle[j];
shuffle[j]=t;
}
return shuffle;
}
/**
* 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();
*/