【问题标题】:Explanation Request: Sorted Array Find Non-Repeating Element解释请求:有序数组查找非重复元素
【发布时间】:2020-12-05 07:21:09
【问题描述】:

以下是用于查找排序数组中不重复的元素的 javascript 代码。我从一本书中得到了这个逻辑。我无法理解为什么要检查 mid % 2 if-else 条件。有人能解释一下它背后的逻辑吗?

    function findOnlyOnce(arr, low, high) {
    if (low > high) {
        return null;
    }
    if (low == high) {
        return arr[low];
    }

    var mid = Math.floor((high + low) / 2);

    if (mid % 2 == 0) {
        if (arr[mid] == arr[mid + 1]) {
            return findOnlyOnce(arr, mid + 2, high);
        } else {
            return findOnlyOnce(arr, low, mid);
        }
    } else {
        if (arr[mid] == arr[mid - 1]) {
            return findOnlyOnce(arr, mid + 1, high);
        } else {
            return findOnlyOnce(arr, low, mid - 1);
        }
    }
}

function findOnlyOnceHelper(arr) {
    return findOnlyOnce(arr, 0, arr.length);
}

console.log(findOnlyOnceHelper([1, 1, 2, 4, 4, 5, 5, 6, 6]));

【问题讨论】:

    标签: arrays search binary-search


    【解决方案1】:

    (mid % 2 == 0) 正在检查数组中数字的数量是奇数还是偶数。

    【讨论】:

    • 我知道。我想知道检查它的目的是什么。它对逻辑有何帮助。
    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2011-06-06
    • 1970-01-01
    • 2018-07-02
    • 2014-04-27
    相关资源
    最近更新 更多