ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์จำนวนเต็ม สำหรับตัวเลขแต่ละตัวในอาร์เรย์ จะมีคู่ที่เป็นลบหรือบวกของมันอยู่ในอาร์เรย์ แต่มีตัวเลขเพียงตัวเดียวที่ไม่มีคู่ ฟังก์ชันควรหาและคืนค่าตัวเลขนั้น
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const arr = [1, -1, 2, -2, 3];
const findOddNumber = (arr = []) => {
let count = 0;
let number = arr.reduce((total, num) => {
if (num >= 0)
count++;
else
count--;
return total + num;
}, 0);
return number / Math.abs(count);
};
console.log(findOddNumber(arr));
ผลลัพธ์
3
คำอธิบายเพิ่มเติม
อาร์เรย์ [1,-1,2,-2,3] ผลรวม = 3, count บวก=3 ลบ=2 diff=1 → 3/1=3 ทริกนี้ใช้ได้เพราะคู่บวก-ลบตัดกันออก (sum=0) เหลือแค่ตัวเดี่ยว วิธีอื่น: XOR ทุกตัว (แต่ต้องจัดการ sign)