Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

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

ปัญหา

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

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

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

อินพุต

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]