問題描述
給定一個數組 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 <= 200001 <= 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