LeetCode384. Shuffle an Array

来源:互联网 发布:韩国bj 知乎 编辑:程序博客网 时间:2024/06/05 09:05

题目要求:
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();

使用经典的洗牌算法,同时注意java中的random.nextint()中范围的问题

public class Solution {    private int[] numsRef;    private int[] nums;    public Solution(int[] nums) {        numsRef = Arrays.copyOf(nums, nums.length);        this.nums = nums;    }    /** Resets the array to its original configuration and return it. */    public int[] reset() {        return numsRef;    }    /** Returns a random shuffling of the array. */    public int[] shuffle() {        //使用经典的洗牌算法处理        if(nums == null) return null;        int length = nums.length;        for(int i = length - 1; i >= 0; i--) {            Random ranx = new Random();            int index = ranx.nextInt(i + 1);            int temple = nums[i];            nums[i] = nums[index];            nums[index] = temple;        }        return nums;    }}/** * 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(); */
0 0
原创粉丝点击