1
function binarySearch(array, target, findFirst) {2
function helper(start, end) {7
const middle = Math.floor((start + end) / 2);8
const value = array[middle];10
if (value === target) {12
if (middle === 0 || array[middle - 1] !== value) {16
return helper(start, middle - 1);18
if (middle === array.length - 1 || array[middle + 1] !== value) {22
return helper(middle + 1, end);24
} else if (value < target) {25
return helper(middle + 1, end);28
return helper(start, middle - 1);31
return helper(0, array.length - 1);34
const findFirstOccurance = (array, target) => binarySearch(array, target, true);35
const findLastOccurance = (array, target) => binarySearch(array, target, false);37
var findSpecialInteger = function (arr) {39
Math.floor(arr.length / 4),40
Math.floor(arr.length / 2),41
Math.floor((3 * arr.length) / 4),43
const firstOccurance = findFirstOccurance(arr, arr[i]);44
const lastOccurance = findLastOccurance(arr, arr[i]);46
if (lastOccurance - firstOccurance + 1 > arr.length / 4) {