LeetCode 384. Shuffle an Array

来源:互联网 发布:武汉少儿编程培训班 编辑:程序博客网 时间:2024/05/29 10:17

Problem Statement

(Source) 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();

Solution

class Solution(object):    def __init__(self, nums):        """        :type nums: List[int]        :type size: int        """        self.copy = copy.deepcopy(nums)        self.nums = nums    def reset(self):        """        Resets the array to its original configuration and return it.        :rtype: List[int]        """        self.nums = copy.deepcopy(self.copy)        return self.nums    def shuffle(self):        """        Returns a random shuffling of the array.        :rtype: List[int]        """        n = len(self.nums)        for i in xrange(n - 1, 0, -1):            j = random.randint(0, i)            self.nums[i], self.nums[j] = self.nums[j], self.nums[i]        return self.nums# Your Solution object will be instantiated and called as such:# obj = Solution(nums)# param_1 = obj.reset()# param_2 = obj.shuffle()

References

(1) Fisher–Yates shuffle.

0 0
原创粉丝点击