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

ดัชนีความแตกต่างของทูเพิลใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน 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