>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 정수 배열의 순열을 어떻게 생성할 수 있나요?

JavaScript에서 정수 배열의 순열을 어떻게 생성할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-15 01:31:11527검색

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으로 문의하세요.