commit
4be6716c46
@ -0,0 +1,46 @@
|
|||||||
|
package 数组操作.q384_打乱数组;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 洗牌算法 o(n)
|
||||||
|
*/
|
||||||
|
public class Solution {
|
||||||
|
private int[] array;
|
||||||
|
private int[] original;
|
||||||
|
|
||||||
|
private Random rand = new Random();
|
||||||
|
|
||||||
|
private List<Integer> getArrayCopy() {
|
||||||
|
List<Integer> asList = new ArrayList<>();
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
asList.add(array[i]);
|
||||||
|
}
|
||||||
|
return asList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Solution(int[] nums) {
|
||||||
|
array = nums;
|
||||||
|
original = nums.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] reset() {
|
||||||
|
array = original;
|
||||||
|
original = original.clone();
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] shuffle() {
|
||||||
|
List<Integer> aux = getArrayCopy();
|
||||||
|
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
int removeIdx = rand.nextInt(aux.size());
|
||||||
|
array[i] = aux.get(removeIdx);
|
||||||
|
aux.remove(removeIdx);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue