GoLang: Shuffle the Array


Given the array nums consisting of 2n elements in the form [x1,x2,…,xn,y1,y2,…,yn]. Return the array in the form [x1,y1,x2,y2,…,xn,yn].

Example 1:
Input: nums = [2,5,1,3,4,7], n = 3
Output: [2,3,5,4,1,7]
Explanation: Since x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 then the answer is [2,3,5,4,1,7].

Example 2:
Input: nums = [1,2,3,4,4,3,2,1], n = 4
Output: [1,4,2,3,3,2,4,1]

Example 3:
Input: nums = [1,1,2,2], n = 2
Output: [1,2,1,2]

Constraints:
1 <= n <= 500
nums.length == 2n
1 <= nums[i] <= 10^3

Hints:
Use two pointers to create the new array of 2n elements. The first starting at the beginning and the other starting at (n+1)th position. Alternate between them and create the new array.

Shuffle the Array using GoLang

We can use two pointers pointing to first and second half of the array, and copy them over to the new array (we can append to the list, or use an incremental pointer). The time complexity is O(N), and space complexity is O(N) – N is given.

1
2
3
4
5
6
7
8
func shuffle(nums []int, n int) []int {
    var ans = make([]int, n << 1)
    for i, j, k := 0, n, 0; i < n; i, j, k = i + 1, j + 1, k + 2 {
        ans[k] = nums[i]
        ans[k + 1] = nums[j]
    }
    return ans
}
func shuffle(nums []int, n int) []int {
    var ans = make([]int, n << 1)
    for i, j, k := 0, n, 0; i < n; i, j, k = i + 1, j + 1, k + 2 {
        ans[k] = nums[i]
        ans[k + 1] = nums[j]
    }
    return ans
}

Random Shuffling Algorithms

–EOF (The Ultimate Computing & Technology Blog) —

GD Star Rating
loading...
360 words
Last Post: Teaching Kids Programming - Permutation of Rooks Do Not Attack Each Other
Next Post: Teaching Kids Programming - Insertion Index in Sorted List (bisect_right)

The Permanent URL is: GoLang: Shuffle the Array

Leave a Reply