เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของความยาว เช่น n อาร์เรย์ประกอบด้วยจำนวนเต็มทั้งหมดตั้งแต่ 0 ถึง n (รวมทั้งทั้ง 0 และ n) แต่ไม่มีจำนวนเต็มเพียงตัวเดียว สามารถเป็นตัวเลขใดก็ได้ และอาร์เรย์จะไม่ถูกจัดเรียง งานของฟังก์ชันของเราคือค้นหาจำนวนที่หายไปและส่งคืนในเวลาเชิงเส้นและปริภูมิคงที่
เนื่องจากอาร์เรย์ประกอบด้วยตัวเลขทั้งหมดตั้งแต่ 0 ถึง n แต่มีหนึ่งค่า เราจึงสามารถคำนวณผลรวมขององค์ประกอบทั้งหมดของอาร์เรย์ในเวลาเชิงเส้นได้
แล้วเราก็ลบมันออกจากผลบวกของจำนวนธรรมชาติ n ตัวแรก ซึ่งสามารถคำนวณเวลาและพื้นที่ไม่คงที่ได้ ความแตกต่างระหว่างทั้งสองจะเป็นตัวเลขที่หายไปของเรา
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [3, 7, 8, 10, 11, 0, 2, 6, 1, 4, 5]; const findMissing = (arr = []) => { const sum = arr.reduce((acc, val) => acc + val); const { length: num } = arr; const correctSum = (num * (num + 1)) / 2; return diff = correctSum - sum; return diff; }; console.log(findMissing(arr));
ผลลัพธ์
ต่อไปนี้เป็นเอาต์พุตคอนโซล -
9