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

ค้นหาองค์ประกอบที่มากกว่าองค์ประกอบที่อยู่ติดกันใน JavaScript


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

ฟังก์ชันควรค้นหาและส่งกลับจำนวนดังกล่าวจากอาร์เรย์ที่มากกว่าทั้งสอง ตัวเลขทางด้านขวาและตัวเลขทางด้านซ้าย หากมีองค์ประกอบดังกล่าวมากกว่าหนึ่งองค์ประกอบในอาร์เรย์ ฟังก์ชันของเราควรส่งคืนองค์ประกอบใดองค์ประกอบหนึ่ง

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

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

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

const output = 9;

เนื่องจากคำถามต้องการการค้นหาองค์ประกอบสูงสุด เราจึงสามารถใช้อัลกอริธึมการค้นหาแบบไบนารีเวอร์ชันที่ปรับแต่งได้

ขั้นตอนเดียวกันจะเป็น -

  • ดูองค์ประกอบใด ๆ

  • หากองค์ประกอบถัดไปและองค์ประกอบก่อนหน้ามีค่าน้อยกว่าปัจจุบัน เราจะพบวิธีแก้ปัญหา จากนั้นส่งคืนดัชนีของปัจจุบัน

  • หากองค์ประกอบถัดไปมากกว่าปัจจุบัน จะต้องมีจุดสูงสุดทางด้านขวา มองไปทางขวาซ้ำๆ

  • หากองค์ประกอบก่อนหน้ามีค่ามากกว่าปัจจุบัน จะต้องมีจุดสูงสุดทางด้านซ้าย มองไปทางซ้ายแบบวนซ้ำ

ตัวอย่าง

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

const arr = [3, 6, 7, 9, 8, 2, 5];
const greaterThanAdjacent = (arr = [], start = 0, end = arr.length) => {
   let mid = start + Math.floor((end - start) / 2);
   let curr = arr[mid];
   let prev = mid-1 < 0 ? -Infinity : arr[mid-1];
   let next = mid+1 > arr.length-1 ? -Infinity : arr[mid+1];
   if (curr > prev && curr > next){
      return arr[mid];
   }
   if (curr < next){
      return greaterThanAdjacent(arr, mid+1, end);
   }
   if (curr > next){
      return greaterThanAdjacent(arr, start, mid-1);
   }
   return null;
};
console.log(greaterThanAdjacent(arr));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

9