ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ arr ซึ่งแทนตำแหน่งของดาวเคราะห์น้อยต่างๆ ในพื้นที่หนึ่งมิติ
สำหรับดาวเคราะห์น้อยแต่ละดวง ค่าสัมบูรณ์แทนขนาด และเครื่องหมายแทนทิศทาง (บวกหมายถึงขวา ลบหมายถึงซ้าย) ดาวเคราะห์น้อยแต่ละดวงเคลื่อนที่ด้วยความเร็วเท่ากัน
ฟังก์ชันควรหาสถานะของดาวเคราะห์น้อยหลังจากการชนกันทั้งหมด หากดาวเคราะห์น้อยสองดวงพบกัน ตัวเล็กจะระเบิด หากขนาดเท่ากัน ทั้งคู่จะระเบิด ดาวเคราะห์น้อยที่เคลื่อนที่ในทิศทางเดียวกันจะไม่พบกัน
ตัวอย่างเช่น หากอินพุตคือ
อินพุต
const arr = [1, 7, 3, 6, 5, 6];
เอาต์พุต
const output = 3;
คำอธิบายเอาต์พุต
ผลรวมของตัวเลขทางซ้ายของดัชนี 3 (nums[3] = 6) เท่ากับผลรวมของตัวเลขทางขวาของดัชนี 3
นอกจากนี้ 3 เป็นดัชนีแรกที่สิ่งนี้เกิดขึ้น
ตัวอย่างโค้ด
const arr = [1, 7, 3, 6, 5, 6];
const medianIndex = (arr = []) => {
let sum = arr.reduce((acc, num) => acc + num, 0);
let currentSum = 0;
for (let i = 0; i < arr.length; i++) {
currentSum += (arr[i - 1] || 0);
sum -= arr[i];
if (currentSum === sum) {
return i;
}
}
return -1;
};
console.log(medianIndex(arr));
ผลลัพธ์
3