在JavaScript 中辨識陣列排列
要計算整數陣列的所有排列,在採用基於字串的演算法時需要考慮一些細微演算法差別處理數組。
原始函數(為字串設計)透過字元追蹤字元和usedChars 陣列。它迭代每個字符,將其添加到usedChars中,並對剩餘字符遞歸調用permute。
適應整數
為了容納整數數組,需要修改:
刪除字串分割和連接操作,因為它們不適用到整數。
修訂後的數組函數
function permute(inputArr) { const permArr = []; const usedInts = []; for (let i = 0; i < inputArr.length; i++) { const el = inputArr.splice(i, 1); usedInts.push(el); if (inputArr.length === 0) { permArr.push(usedInts.slice()); } permute(inputArr.slice()); inputArr.splice(i, 0, el); usedInts.pop(); } return permArr; }
下面修訂後的函數解決了上述調整:
用法範例
console.log(permute([1, 2, 3, 4])); // [[1, 2, 3, 4], [1, 2, 4, 3], ...] console.log(permute([5, 6, 7])); // [[5, 6, 7], [5, 7, 6], ...]
以上是如何在 JavaScript 中高效產生整數陣列的所有排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!