查詢字串陣列的交集 - JavaScript
我們有兩個數字陣列,我們需要編寫一個函式,例如intersection(),它計算它們的交集並返回一個包含交集元素的陣列(順序任意)。結果中的每個元素出現的次數應與其在兩個陣列中出現的次數相同。
例如:
如果輸入是:
arr1 = ['hello', 'world', 'how', 'are', 'you']; arr2 = ['hey', 'world', 'can', 'you', 'rotate'];
那麼輸出應該是:
Output: ['world', 'you'];
方法
如果陣列已排序,我們可以使用雙指標方法,初始時兩個指標都指向各自陣列的開頭,然後我們可以繼續增加相應的指標,這將使時間複雜度為O(m+n),其中m和n是陣列的大小。
但是,由於我們有未排序的陣列,因此對陣列進行排序然後使用這種方法是沒有意義的,我們將檢查第一個陣列中的每個值與第二個陣列的值,並構建一個交集陣列。這將花費我們O(n^2)的時間。
示例
以下是程式碼:
arr1 = ['hello', 'world', 'how', 'are', 'you'];
arr2 = ['hey', 'world', 'can', 'you', 'rotate'];
const intersectElements = (arr1, arr2) => {
const res = [];
const { length: len1 } = arr1;
const { length: len2 } = arr2;
const smaller = (len1 < len2 ? arr1 : arr2).slice();
const bigger = (len1 >= len2 ? arr1 : arr2).slice();
for(let i = 0; i < smaller.length; i++) {
if(bigger.indexOf(smaller[i]) !== -1) {
res.push(smaller[i]);
bigger.splice(bigger.indexOf(smaller[i]), 1, undefined);
}
};
return res;
};
console.log(intersectElements(arr1, arr2));輸出
這將在控制檯中產生以下輸出:
[ 'world', 'you' ]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP