เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์อ่านอย่างเดียว (read only) ของ n + 1 จำนวนเต็มระหว่าง 1 และ n ฟังก์ชันควรหาตัวเลขหนึ่งตัวที่ซ้ำในเวลาเชิงเส้นและใช้พื้นที่สูงสุด O(n)
เช่น ถ้าอาร์เรย์อินพุตคือ:
const arr = [3 4 1 4 1];
ผลลัพธ์ควรเป็น:
const output = 1;
ถ้ามีคำตอบที่เป็นไปได้หลายคำตอบ (เหมือนข้างต้น) เราควรแสดงผลใดก็ได้ ถ้าไม่มีค่าซ้ำ เราควรแสดงผล -1
ตัวอย่าง
const arr = [3, 4, 1, 4, 1];
const findRepeatedNumber = (arr = []) => {
const set = new Set();
for (const item of arr) {
if (set.has(item)){
return item;
};
set.add(item);
};
return -1;
};
console.log(findRepeatedNumber(arr));
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ดังนี้:
4