>  기사  >  백엔드 개발  >  PHP에서 고정 값과 동일한 배열의 두 숫자의 합을 계산하는 방법

PHP에서 고정 값과 동일한 배열의 두 숫자의 합을 계산하는 방법

PHPz
PHPz원래의
2023-04-20 13:53:54669검색

PHP는 매우 일반적으로 사용되는 서버 측 스크립팅 언어입니다. 우리는 개발 과정에서 배열을 자주 사용합니다. 배열에서는 합계가 고정된 값과 같은 배열의 두 숫자 조합을 계산하는 방법과 같은 몇 가지 문제에 직면하게 됩니다. 이는 매우 일반적인 문제이며, 이 기사에서는 이를 해결하는 방법을 소개합니다.

1. 문제 설명

정수 배열 nums와 정수 target이 주어지면 합계가 target과 같은 두 숫자를 배열에서 찾습니다.

예를 들어 nums = [2, 7, 11, 15], target = 9인 경우 nums [0] + nums [1] = 2 + 7 = 9이므로 [0, 1]이 반환됩니다.

2. Solution

이 문제를 해결하기 위해 이중 루프 방법을 사용할 수 있지만 시간 복잡도가 너무 높고 효율적이지 않습니다. 더 효율적인 방법은 다음과 같습니다. 해시 테이블을 사용하는 것입니다.

순회된 숫자를 해시 테이블에 저장하고 대상에서 현재 숫자를 뺀 숫자와 동일한 다른 숫자가 해시 테이블에 있는지 확인할 수 있습니다. 존재하는 경우 두 숫자의 합을 대상으로 얻을 수 있습니다.

구체적인 구현은 다음과 같습니다.

function twoSum($nums, $target) {
    $map = [];
    $len = count($nums);

    for ($i = 0; $i < $len; $i++) {
        $diff = $target - $nums[$i];
        if (isset($map[$diff])) {
            return [$map[$diff], $i];
        }
        $map[$nums[$i]] = $i;
    }
    return [-1, -1];
}

$nums = [2, 7, 11, 15];
$target = 9;
$res = twoSum($nums, $target);
print_r($res);

3. 코드 설명

1. 먼저 해시 테이블 $map을 정의하고 빈 배열로 초기화합니다.

2. 그런 다음 배열 $nums와 대상 값 $target을 정의하고 $len은 배열 길이입니다.

3. 다음으로 for 루프를 사용하여 $nums 배열을 순회합니다. 숫자를 순회할 때마다 대상 값 $target에서 숫자를 뺀 결과는 $diff입니다.

4. $diff와 동일한 $map에 다른 숫자가 있으면 두 숫자의 합이 $target임을 의미하며 이 두 숫자의 인덱스를 반환할 수 있습니다.

5. 존재하지 않으면 통과한 번호를 $map에 저장하고 다음 사이클로 진행합니다.

6. 마지막으로 전체 루프에서 요구 사항을 충족하는 숫자 조합이 발견되지 않으면 [-1, -1]이 반환됩니다.

4. 요약

이 글에서는 PHP 배열에 있는 두 숫자의 합이 고정된 값과 같다는 문제를 해결하기 위해 해시 테이블을 사용하는 방법을 소개합니다. 해시 테이블을 사용하면 하나의 루프에서 요구 사항을 충족하는 숫자 조합을 O(n)의 시간 복잡도로 찾을 수 있습니다.

또한 배열이 비어 있고 길이가 1인 경우와 같은 일부 극단적인 경우에도 주의할 필요가 있습니다.

이 글이 PHP를 처음 접하는 독자들에게 도움이 되기를 바랍니다.

위 내용은 PHP에서 고정 값과 동일한 배열의 두 숫자의 합을 계산하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.