相关标签

一、题目要求

二、题解和代码实现
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();
 */









