JavaScript 中三個已排序陣列的交集


我們要求編寫一個 JavaScript 函式,它採用三個順序遞增的整數陣列。該函式隨後應構造並返回一個數組,其中僅包含在所有這三個陣列中都存在的元素。

例如 -

如果輸入陣列為 -

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 output = [4, 13];

例項

程式碼如下 -

 即時演示

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 curr1 = 0;
   let curr2 = 0;
   let curr3 = 0;
   const res = [];
   while((curr1 < arr1.length) && (curr2 < arr2.length) && (curr3 < arr3.length)){
      if((arr1[curr1] === arr2[curr2]) && (arr2[curr2] === arr3[curr3])){
         res.push(arr1[curr1]);
         curr1++;
         curr2++;
         curr3++;
      }
      const max = Math.max(arr1[curr1], arr2[curr2], arr3[curr3]);
      if(arr1[curr1] < max){
         curr1++;
      };
      if(arr2[curr2] < max){
         curr2++;
      };
      if(arr3[curr3] < max){
         curr3++;
      };
   };
   return res;
};
console.log(intersectThree(arr1, arr2, arr3));

輸出

控制檯中的輸出將為 -

[4, 13]

更新於: 2021 年 2 月 26 日

357 次瀏覽

開啟您的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.