問題描述

給定一個數組 nums ,我們可以將這個數組重新排列成 nums[0], nums[1], ..., nums[n-1], nums[0], nums[n-1], ..., nums[1] 的順序。返回重新排列後的數組。

示例: 輸入: [2,5,1,3,4], n = 4 輸出: [2,3,5,4,1,2,1,3,4]

限制:

  • 1 <= nums.length <= 20000
  • 1 <= n <= nums.length

解法一

解題思路:

使用雙指針法,一個指針從前向後遍歷,一個指針從後向前遍歷,交替添加元素到結果數組中。這種方法簡單且高效。

/*
 * @lc app=leetcode.cn id=384 lang=javascript
 *
 * [384] Shuffle an Array
 */

// @lc code=start
function shuffle(nums, n) {
    const result = [];
    for (let i = 0; i < n; i++) {
        // 將第i個元素添加到結果數組
        result.push(nums[i]);
        // 如果還有剩餘的元素,將第n+i個元素添加到結果數組
        if (i + n < nums.length) {
            result.push(nums[i + n]);
        }
    }
    return result;
}
// @lc code=end