เราได้รับอาร์เรย์ของจำนวนเต็มที่แตกต่างกัน สมมติว่า 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