能否透過源陣列來形成目標陣列 JavaScript
給定一個不同整數陣列,假設為 arr,以及另一個整數陣列,假設為 sourceArr。
在 sourceArr 陣列中,整數不同。我們應編寫一個函式,該函式透過以任意順序連線 sourceArr 中的陣列來形成 arr。
但是,我們不能重新排序 sourceArr 中任何子陣列內的整數。我們應該返回 true(如果可以從 sourceArr 中形成陣列 arr)或返回 false(否則)。
例如,−
const arr = [23, 67, 789]; const sourceArr = [[23], [789, 67]];
該函式應返回 false,因為我們不能重新排序子陣列內的元素,並且沒有該函式,我們無法實現目標 arr。
示例
const arr1 = [23, 67, 789];
const arr2 = [23, 789, 67];
const sourceArr = [[23], [789, 67]];
const validFormation = (arr, sourceArr) => {
const indexes = new Array(100);
let arrIndex = 0;
let index;
for (let i = 0; i < sourceArr.length; ++i) {
indexes[sourceArr[i][0]] = i;
}
while (arrIndex < arr.length) {
index = indexes[arr[arrIndex]];
if (index === undefined) return false;
for (let j = 0; j < sourceArr[index].length; ++j) {
if (arr[arrIndex] !== sourceArr[index][j]) return false;
++arrIndex;
}
}
return true;
};
console.log(validFormation(arr1, sourceArr));
console.log(validFormation(arr2, sourceArr));輸出
這將產生以下輸出 −
false true
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP