能否透過源陣列來形成目標陣列 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

更新時間:25-11-2020

155 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.