Leetcode problem 28 - 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]
/**
* @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