Cần viết hàm JavaScript nhận mảng chỉ đọc n+1 số nguyên từ 1 đến n. Hàm tìm một số lặp lại trong thời gian tuyến tính và dùng tối đa O(n) không gian.
Ví dụ - Nếu mảng đầu vào:
const arr = [3 4 1 4 1];
Đầu ra:
const output = 1;
Nếu có nhiều đáp án (như trên), xuất ra một trong số đó. Nếu không trùng lặp, xuất -1.
Ví dụ
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));
Kết quả
Điều này sẽ tạo ra đầu ra sau:
4