LeetCode 384. Shuffle an Array



Shuffle a set of numbers without duplicates.


// 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.

// Resets the array back to its original configuration [1,2,3].

// Returns the random shuffling of array [1,2,3].


Randomly sets original elements new positions.

Python Solution

class Solution:

    def __init__(self, nums: List[int]):
        self.original_nums = nums

    def reset(self) -> List[int]:
        Resets the array to its original configuration and return it.
        return self.original_nums
    def shuffle(self) -> List[int]:
        Returns a random shuffling of the array.
        shuffle_nums = [0 for i in range(0, len(self.original_nums))]
        new_positions = set()
        for i in range(0, len(self.original_nums)):
            num = self.original_nums[i]

            new_position = randint(0, len(self.original_nums) - 1)
            while new_position in new_positions:
                new_position = randint(0, len(self.original_nums) - 1)
            shuffle_nums[new_position] = num
        return shuffle_nums 

# Your Solution object will be instantiated and called as such:
# obj = Solution(nums)
# param_1 = obj.reset()
# param_2 = obj.shuffle()
  • Time complexity: O(n).
  • Space complexity: O(n).

2 Thoughts to “LeetCode 384. Shuffle an Array”

  1. Hi,

    I watched your youtube videos recently. They helped me a lot. Please keep producing Youtube videos.


Leave a Reply to Jack Cancel reply

Your email address will not be published. Required fields are marked *