算法:交替合并并反转两个数组

43 阅读1分钟
/**
 * 交替合并并反转两个数组
 * @param {Array} arr1 - 第一个数组
 * @param {Array} arr2 - 第二个数组
 * @returns {Array} - 交替合并并反转后的数组
 */
function alternateReverseArrays(arr1, arr2) {
    // 初始化结果数组
    let result = [];
    // 初始化第一个数组的索引,从最后一个元素开始
    let i = arr1.length - 1;
    // 初始化第二个数组的索引,从最后一个元素开始
    let j = arr2.length - 1;
    // 初始化结果数组的索引
    let k = 0;
    // 当两个数组中至少有一个还有元素时
    while (i >= 0 || j >= 0) {
        // 如果第一个数组还有元素
        if (i >= 0) {
            // 将第一个数组的当前元素添加到结果数组中,并将索引减一
            result[k++] = arr1[i--];
        }
        // 如果第二个数组还有元素
        if (j >= 0) {
            // 将第二个数组的当前元素添加到结果数组中,并将索引减一
            result[k++] = arr2[j--];
        }
    }
    // 返回结果数组
    return result;
}
// 示例用法
let array1 = [1, 2, 3, 4, 5];
let array2 = ['a', 'b', 'c'];
let output = alternateReverseArrays(array1, array2);
console.log(output); // 输出: [5, 'c', 4, 'b', 3, 'a', 2, 1]