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

การหาระยะทางไปยังองค์ประกอบที่มากขึ้นถัดไปใน JavaScript


ปัญหา

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

ฟังก์ชันของเราควรสร้างอาร์เรย์ใหม่สำหรับการป้อนข้อมูล โดยที่แต่ละองค์ประกอบที่เกี่ยวข้องกันเป็นระยะทางไปยังองค์ประกอบที่ใหญ่กว่าถัดไปจากองค์ประกอบปัจจุบัน และหากไม่มีองค์ประกอบใดที่ใหญ่กว่าทางด้านขวาขององค์ประกอบปัจจุบัน เราควรกด 0 สำหรับองค์ประกอบนั้นที่สอดคล้องกัน ในอาร์เรย์ res และสุดท้ายเราควรคืนค่าอาร์เรย์นี้

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

ป้อนข้อมูล

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];

ผลผลิต

const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];

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

เนื่องจากองค์ประกอบที่มากกว่าถัดไปถึง 12 คือ 13 ซึ่งอยู่ห่างออกไป 1 ช่วงตึก

ถัดไปที่มากกว่า 13 คือ 14 ห่างออกไป 1 ช่วงตึก

ถัดไปที่มากกว่า 14 คือ 16 ห่างออกไป 2 ช่วงตึกเป็นต้น

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

ตัวอย่าง

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
const findNextGreater = (arr = []) => {
   const stack = []
   const res = new Array(arr.length).fill(0)
   for (let i = 0; i < arr.length; i++) {
      while (arr[i] > arr[stack[stack.length - 1]] && stack.length > 0) {
         const index = stack.pop()
         res[index] = i - index
      }
      stack.push(i)
   };
   return res
};
console.log(findNextGreater(arr));

ผลลัพธ์

[1, 1, 2, 1, 3, 1, 1, 1, 0, 0]