JavaScript One fourth element in array


Problem

JavaScript function that takes in an array of integers sorted in increasing order, arr.

There is exactly one integer in the array that occurs more than one fourth times (25%) of the times, our function should return that number.

For example, if the input to the function is −

const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];

Then the output should be −

const output = 7;

Example

 Live Demo

The code for this will be −

const arr = [3, 5, 5, 7, 7, 7, 7, 8, 9];
const oneFourthElement = (arr = []) => {
   const len = arr.length / 4;
   const search = (left, right, target, direction = 'left') => {
      let index = -1
      while (left <= right) {
         const middle = Math.floor(left + (right - left) / 2);
         if(arr[middle] === target){
            index = middle;
            if(direction === 'left'){
               right = middle - 1;
            }else{
               left = middle + 1;
            };
         }else if(arr[middle] < target){
            left = middle + 1;
         }else{
            right = middle - 1;
         };
      };
      return index;
   };
   for(let i = 1; i <= 3; i++){
      const index = Math.floor(len * i);
      const num = arr[index];
      const loIndex = search(0, index, num, 'left');
      const hiIndex = search(index, arr.length - 1, num, 'right');
      if(hiIndex - loIndex + 1 > len){
         return num;
      };
   };
};
console.log(oneFourthElement(arr));

Output

And the output in the console will be −

7

Updated on: 07-Apr-2021

76 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements