Leetcode 384 Shuffle an Array

来源:互联网 发布:hbulider js无法跳转 编辑:程序博客网 时间:2024/06/16 23:36

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();
任意一种排列组合出现的几率相同那么肯定会用到random

random 地对数字顺序进行交换即可


public class Solution {    int[] original;    java.util.Random random;    public Solution(int[] nums) {        original = nums;        random = new Random();    }        /** Resets the array to its original configuration and return it. */    public int[] reset() {        return original;    }        /** Returns a random shuffling of the array. */    public int[] shuffle() {        if(original == null) return null;        int[] a = original.clone();        for(int j = 1; j < a.length; j++) {            int i = random.nextInt(j + 1);            swap(a, i, j);        }        return a;    }           private void swap(int[] a, int i, int j) {        int t = a[i];        a[i] = a[j];        a[j] = t;    }}/** * 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(); */



原创粉丝点击