【发布时间】: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