สร้างขึ้น
สมมติว่าเรามีอาร์เรย์ต่อไปนี้ใน JavaScript -
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
หากเราพล็อตจุดของอาร์เรย์นี้บนแกน y โดยแต่ละจุดที่อยู่ติดกันอยู่ห่างจากแกน onx เป็นระยะทางหน่วย กราฟจะเป็นดังนี้ -
กราฟนี้แสดงให้เห็นชัดเจนว่ามีจุดสูงสุด (สูงสุด) ในพื้นที่สองรายการในอาร์เรย์นี้ที่ดัชนี 3 และ 7 โดยมีค่า 7 และ 4 ตามลำดับ
ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ฟังก์ชันของเราควรจะส่งคืนอ็อบเจ็กต์ที่มีสองคุณสมบัติ คือ ค่าสูงสุด และตำแหน่ง
คุณสมบัติทั้งสองนี้จะเป็นอาร์เรย์ และอาร์เรย์ maxima จะมีค่าของ localmaximas ในอาร์เรย์ และอาร์เรย์ตำแหน่งจะมีดัชนีที่เกี่ยวข้อง
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรมีลักษณะดังนี้ −
const output = { maximas: [7, 4], positions: [3, 7] };
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4]; const findMaxima = (arr = []) => { let positions = [] let maximas = [] for (let i = 1; i < arr.length - 1; i++) { if (arr[i] > arr[i - 1]) { if (arr[i] > arr[i + 1]) { positions.push(i) maximas.push(arr[i]) } else if (arr[i] === arr[i + 1]) { let temp = i while (arr[i] === arr[temp]) i++ if (arr[temp] > arr[i]) { positions.push(temp) maximas.push(arr[temp]) } } } } return { maximas, positions }; }; console.log(findMaxima(arr));
ผลลัพธ์
จากนั้นผลลัพธ์ควรเป็น −
{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }