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

การค้นหาพีคของอาร์เรย์พีคจากส่วนกลางใน JavaScript


อาร์เรย์พีคตรงกลาง

เราเรียกอาร์เรย์ arr ว่า อาร์เรย์พีคตรงกลาง หากมีคุณสมบัติดังต่อไปนี้ −

  • arr.length>=3

  • มีบางตัว i ที่มี 0

    • arr[0]

    • arr[i]> arr[i+1]> ...> arr[arr.length - 1]

ปัญหา

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

อาร์เรย์อินพุตเป็นอาร์เรย์พีคจากส่วนกลาง ฟังก์ชันของเราควรจะคืนค่าดัชนีพีคของอาร์เรย์พีคจากส่วนกลาง

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

ป้อนข้อมูล

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];

ผลผลิต

const output = 4;

คำอธิบายผลลัพธ์

เนื่องจากองค์ประกอบที่ดัชนี 4 (15) เป็นองค์ประกอบสูงสุดของอาร์เรย์นี้

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];
const findPeak = (arr = []) => {
   if(arr.length < 3) {
      return -1
   }
   const helper = (low, high) => {
      if(low > high) {
         return -1
      }
      const middle = Math.floor((low + high) / 2)
      if(arr[middle] <= arr[middle + 1]) {
         return helper(middle + 1, high)
      }
      if(arr[middle] <= arr[middle - 1]) {
         return helper(low, middle - 1)
      }
      return middle
   }
   return helper(0, arr.length - 1)
};
console.log(findPeak(arr));

ผลลัพธ์

4