Leetcode: Shuffle an Array

Shuffle a set of numbers without duplicates.

将每个数与其之后的随机一个数互换。
注意reset的时候要使用clone。

public class Solution {
    private int[] originals;
    private int[] current;
    public Solution(int[] nums) {
        this.originals = nums.clone();
        this.current = nums;
    }
    
    /** Resets the array to its original configuration and return it. */
    public int[] reset() {
        current = originals.clone();
        return current;
    }
    
    /** Returns a random shuffling of the array. */
    public int[] shuffle() {
        Random random = new Random();
        for (int i = 0; i < current.length; i++) {
            int a = current[i];
            int nextIndex = i + random.nextInt(current.length-i);
            current[i] = current[nextIndex];
            current[nextIndex] = a;
        }
        return current;
    }
}

Leave a comment