相关标签
一、题目要求
二、题解和代码实现
1.题解
官方题解,主要看洗牌算法
2.代码实现
代码如下(示例):
class Solution {
int[] bufnums;//用于存储原始数组
int[] renums;//用于进行随机打乱的数组
private static Random rand = new Random();
public Solution(int[] nums) {
bufnums = Arrays.copyOf(nums,nums.length);//把输入的数组拷贝存储进数组
renums = nums;
}
public int[] reset() {
return bufnums;
}
public int[] shuffle() {
shuff(renums);
return renums;
}
public static void swap(int[] a, int i, int j) {//交换位置
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void shuff(int[] arr) {
int length = arr.length;
for (int i = length; i > 0; i--) {
// rand.nextInt(x) 代表取区间[0,x)内随机一个整数
int randInd = rand.nextInt(i);
swap(arr, randInd, i - 1);
}
}
}
/**
* 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();
*/