384. Shuffle an Array

来源:互联网 发布:html的js加减怎么做 编辑:程序博客网 时间:2024/06/07 07:07

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();
这道题需要用到洗牌算法。代码如下:

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

原创粉丝点击