Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

JavaScript หนึ่งในสี่องค์ประกอบในอาร์เรย์


ปัญหา

ฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็มเรียงตามลำดับที่เพิ่มขึ้น arr.

ในอาร์เรย์มีหนึ่งจำนวนเต็มที่เกิดขึ้นมากกว่าหนึ่งในสี่ (25%) ของครั้ง ฟังก์ชันของเราควรส่งคืนตัวเลขนั้น

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

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

จากนั้นผลลัพธ์ควรเป็น −

const output = 7;

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

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));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

7