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

การหาตัวเลขในอาร์เรย์ที่ไม่มีคู่บวกหรือลบตรงกันใน JavaScript

ปัญหา

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