首页 > 解决方案 > 反向数组到位......我的实现有什么问题

问题描述

我试图就地反转一个数组,例如给定一个数组[1, 2, 3]将其反转为[3, 2, 1].

这是我的实现:

function reverseInPlace(arr) {
    var start = 0;
    var end = arr.length + 1;
    
    while (start > end) {
        var temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
    }
    
    return arr;
};

reverseInPlace([1,2,3])

但是每次我运行这个,结果仍然是[1, 2, 3],不是[3, 2, 1]。我想知道我的反向做错了什么。

标签: javascriptreverse

解决方案


你有一些问题:

  • 错误end的值,它应该是最后一个索引length - 1
  • 当检查错误时,您需要检查start < end,原始代码在 start false,这就是得到未更改数组的原因,
  • 缺少 的增量start和减量end

function reverseInPlace(arr) {
    let start = 0,
        end = arr.length - 1;

    while (start < end) {
        let temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;

        start++;
        end--;    
    }

    return arr;
}

console.log(reverseInPlace([1, 2, 3]));


推荐阅读