Computer >> Máy Tính >  >> Lập trình >> Javascript

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

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một mảng chỉ đọc gồm n + 1 số nguyên từ 1 đến n.

Hàm sẽ tìm một số lặp lại theo thời gian tuyến tính và sử dụng tối đa không gian O (n).

Ví dụ:Nếu mảng đầu vào là -

const arr = [3 4 1 4 1];

Sau đó, đầu ra phải là -

const output = 1;

Nếu có nhiều câu trả lời có thể có (như ở trên), chúng ta nên xuất một câu trả lời bất kỳ. Nếu không có bản sao, chúng ta nên xuất ra -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));

Đầu ra

Điều này sẽ tạo ra kết quả sau -

4