Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm phần tử trùng lặp đầu tiên trong mảng trong thời gian tuyến tính JavaScript


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