เราได้รับอาร์เรย์ของจำนวนเต็มที่แตกต่างกัน สมมติว่า arr และอาร์เรย์ของอาร์เรย์จำนวนเต็มอื่น เช่น sourceArr
ในอาร์เรย์ sourceArr จำนวนเต็มจะแตกต่างกัน เราควรเขียนฟังก์ชันที่สร้าง arr โดยการต่ออาร์เรย์ใน sourceArr ในลำดับใดก็ได้
อย่างไรก็ตาม เราไม่สามารถเรียงลำดับจำนวนเต็มภายในอาร์เรย์ย่อยใดๆ ใน soureArr ได้ เราควรคืนค่า จริง หากเป็นไปได้ที่จะสร้างอาร์เรย์ arr จาก sourceArr มิฉะนั้น จะเป็นเท็จ
ตัวอย่างเช่น −
const arr = [23, 67, 789]; const sourceArr = [[23], [789, 67]];
ฟังก์ชันควรคืนค่า false เนื่องจากเราไม่สามารถจัดลำดับองค์ประกอบภายใน subarray ใหม่ได้ และเราจะไม่สามารถบรรลุ 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