Shuffle a set of numbers without duplicates.
Example:
// Init an array with set 1, 2, and 3.int[] nums = {1,2,3};Solution solution = new Solution(nums);// Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned.solution.shuffle();// Resets the array back to its original configuration [1,2,3].solution.reset();// Returns the random shuffling of array [1,2,3].solution.shuffle();
题意:
洗牌
Solution1:
code
1 class Solution { 2 int[] origin; 3 int[] nums; 4 Random random; 5 6 public Solution(int[] nums) { 7 origin = copy(nums); 8 this.nums = copy(nums); 9 random = new Random();10 }11 12 /** Resets the array to its original configuration and return it. */13 public int[] reset() {14 nums = copy(origin);15 random = new Random();16 return nums;17 18 }19 20 /** Returns a random shuffling of the array. */21 public int[] shuffle() {22 final int n = nums.length;23 int[] result = new int[n];24 25 for(int i = n; i>=1; i--){26 int randomIdx = random.nextInt(i);27 result[n - i] = nums[randomIdx];28 int temp = nums[randomIdx];29 nums[randomIdx] = nums[i - 1];30 nums[i - 1] = temp;31 }32 return result;33 }34 35 private int[] copy(int[] array){36 int[] result = new int[array.length];37 for(int i = 0; i < array.length; i++){38 result[i] = array[i];39 }40 return result;41 }42 }43 44 /**45 * Your Solution object will be instantiated and called as such:46 * Solution obj = new Solution(nums);47 * int[] param_1 = obj.reset();48 * int[] param_2 = obj.shuffle();49 */