首頁 >web前端 >js教程 >如何在 JavaScript 中產生整數陣列的排列?

如何在 JavaScript 中產生整數陣列的排列?

Patricia Arquette
Patricia Arquette原創
2024-12-15 01:31:11525瀏覽

How Can I Generate Permutations of an Integer Array in JavaScript?

JavaScript 中的排列

當面對為整數陣列產生排列的任務時,最簡單的方法是使用遞歸演算法。在給定的程式碼片段中介紹了一種旨在處理字串的演算法。然而,當嘗試調整此演算法以處理整數數組時,由於方法對不同資料類型的操作方式存在差異,因此出現了挑戰。

為了解決此問題,需要對此演算法進行修改版本,它考慮了整數的特定行為。以下介紹的一種優雅的解決方案包含了以下注意事項:

function permutator(inputArr) {
  var results = [];

  function permute(arr, memo) {
    var cur, memo = memo || [];

    for (var i = 0; i < arr.length; i++) {
      cur = arr.splice(i, 1);
      if (arr.length === 0) {
        results.push(memo.concat(cur));
      }
      permute(arr.slice(), memo.concat(cur));
      arr.splice(i, 0, cur[0]);
    }

    return results;
  }

  return permute(inputArr);
}

該演算法對輸入數組的副本進行操作,確保原始數組保持不變。它遞歸地探索所有可能的組合並將排列儲存在數組的數組中。

或者,也可以使用此演算法的 ES6 (2015) 版本:

const permutator = (inputArr) => {
  let result = [];

  const permute = (arr, m = []) => {
    if (arr.length === 0) {
      result.push(m)
    } else {
      for (let i = 0; i < arr.length; i++) {
        let curr = arr.slice();
        let next = curr.splice(i, 1);
        permute(curr.slice(), m.concat(next))
      }
    }
  }

  permute(inputArr)

  return result;
}

此版本使用箭頭函數和預設參數值以獲得更簡潔的語法。功能保持不變,為提供的陣列產生排列。

以上是如何在 JavaScript 中產生整數陣列的排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn