1 minute read

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]

/**
 * @param {number[]} nums
 * @param {number} n
 * @return {number[]}
 */
var shuffle = function (nums, n) {
  let newArr = [nums[0]];
  let count = 1;
  for (let i = 1; i < nums.length; i++) {
    if (i % 2 === 0) {
      newArr.push(nums[count++]);
    } else {
      newArr.push(nums[n++]);
    }
  }
  return newArr;
};

let newArr = [nums[0]];: Initialize a new array newArr with the first element of the input array nums.

let count = 1;: Initialize a variable count with the value 1. This variable will be used to keep track of the index to access elements from the second half of the input array.

for (let i = 1; i < nums.length; i++) {: Start a loop that iterates over the input array nums, starting from index 1.

if (i % 2 === 0) {: Check if the current index i is even.

newArr.push(nums[count++]);: If i is even, push the element at index count from the second half of the input array nums into the newArr. Then, increment the count variable to move to the next element in the second half.

} else {: If the current index i is odd.

newArr.push(nums[n++]);: Push the element at index n from the first half of the input array nums into the newArr. Then, increment the n variable to move to the next element in the first half.

return newArr;: Return the shuffled array newArr after the loop finishes.

Leave a comment