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

Giao của ba mảng đã sắp xếp trong JavaScript

Viết hàm tìm giao của 3 mảng số nguyên đã sắp xếp tăng dần (phần tử xuất hiện trong cả 3).

Ví dụ: arr1=[4,7,8,11,13,15,17], arr2=[1,3,4,13,18], arr3=[2,4,7,8,9,10,13] → [4,13].

Ví dụ

const arr1 = [4, 7, 8, 11, 13, 15, 17];
const arr2 = [1, 3, 4, 13, 18];
const arr3 = [2, 4, 7, 8, 9, 10, 13];
const intersectThree = (arr1 = [], arr2 = [], arr3 = []) => {
  let c1 = 0, c2 = 0, c3 = 0;
  const res = [];
  while (c1 < arr1.length && c2 < arr2.length && c3 < arr3.length) {
    if (arr1[c1] === arr2[c2] && arr2[c2] === arr3[c3]) {
      res.push(arr1[c1]); c1++; c2++; c3++;
    } else {
      const max = Math.max(arr1[c1], arr2[c2], arr3[c3]);
      if (arr1[c1] < max) c1++;
      if (arr2[c2] < max) c2++;
      if (arr3[c3] < max) c3++;
    }
  }
  return res;
};
console.log(intersectThree(arr1, arr2, arr3));

Kết quả

[4, 13]