ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
สมมติว่าสองดัชนี i และ j ในอาร์เรย์ที่ตรงตามเงื่อนไขต่อไปนี้ -
-
ฉัน <เจ และ
-
arr[i] <=arr[j]
จากทูเพิลดัชนีทั้งหมด (i, j) ฟังก์ชันของเราควรคืนค่าผลต่าง j - i โดยที่ค่าสูงสุดคือค่าสูงสุด
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = [6, 0, 8, 2, 1, 5];
จากนั้นผลลัพธ์ควรเป็น −
const output = 4;
คำอธิบายผลลัพธ์
ความแตกต่างสูงสุดอยู่ที่ (i, j) =(1, 5):arr[1] =0 และ arr[5] =5.
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [6, 0, 8, 2, 1, 5]; const maximumDifference = (arr = []) => { let max = 0 const stack = [0] for (let i = 1; i < arr.length; i++) { if (arr[i] < arr[stack[stack.length - 1]]) { stack.push(i) } } for (let i = arr.length - 1; i >= 0; i--) { while (arr[i] >= arr[stack[stack.length - 1]]) { max = Math.max(max, i - stack.pop()) } } return max; }; console.log(maximumDifference(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
4