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^3Hints:
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
- The Fisher–Yates Random Shuffle Algorithm
- GoLang: Shuffle the Array
- Teaching Kids Programming – The Fisher–Yates Random Shuffle Algorithm in Python
–EOF (The Ultimate Computing & Technology Blog) —
loading...
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)