>  기사  >  백엔드 개발  >  PHP는 제품 배열에서 현재 요소를 제외합니다.

PHP는 제품 배열에서 현재 요소를 제외합니다.

PHPz
PHPz원래의
2023-05-19 17:45:37434검색

PHP는 웹 개발 분야에서 일반적으로 사용되는 널리 사용되는 스크립팅 언어입니다. PHP에서는 배열을 처리해야 하는 상황이 자주 발생합니다. 예를 들어, 배열이 주어지면 현재 요소를 제거한 후 나머지 요소의 곱을 계산해야 합니다. 이 기사에서는 현재 요소를 제거한 후 PHP를 사용하여 제품 배열을 구현하는 방법을 소개합니다.

1. 원래 아이디어:

두 개의 루프를 사용하여 이 요구 사항을 완료할 수 있습니다.

  • 외부 루프는 각 요소를 순회합니다.
  • 내부 루프는 순회된 현재 요소 이외의 요소의 곱을 계산합니다.

이 방법의 시간 복잡도는 O(n^2)입니다. 배열 요소가 너무 많으면 프로그램 실행 시간이 크게 늘어납니다. 그러므로 알고리즘 효율성을 높이기 위해서는 생각을 바꿔야 합니다.

2. 최적화 아이디어:

먼저 전체 배열의 곱을 계산한 다음, 현재 요소를 기준으로 전체 배열의 곱을 현재 요소로 나누어 현재 요소를 제거한 후 결과를 얻을 수 있습니다.

그러나 이 방법은 현재 요소가 0인 경우 0으로 나누는 것이 의미가 없기 때문에 문제가 있습니다. 따라서 현재 요소가 0인 경우를 처리해야 합니다.

3. 전체 코드:

전체 PHP 코드는 다음과 같습니다.

function productExceptSelf($nums) {
    $length = count($nums);
    if ($length == 0) {
        return array();
    } elseif ($length == 1) {
        return array(0);
    }

    $prod = 1;
    $zeroCount = 0;
    for ($i = 0; $i < $length; $i++) {
        if ($nums[$i] == 0) {
            $zeroCount++;
            if ($zeroCount > 1) {
                return array_fill(0, $length, 0);
            }
            continue;
        }
        $prod *= $nums[$i];
    }

    $res = array();
    for ($i = 0; $i < $length; $i++) {
        if ($zeroCount == 1 && $nums[$i] != 0) {
            $res[] = 0;
            continue;
        }
        if ($zeroCount > 1) {
            $res[] = 0;
            continue;
        }
        $res[] = $nums[$i] == 0 ? $prod : $prod / $nums[$i];
    }
    return $res;
}

4. 코드 분석:

위 코드는 다음 아이디어를 채택합니다. 먼저 전체 배열을 스캔하고 0이 아닌 요소의 곱을 계산합니다. 배열에서. 동시에 배열에 0의 개수를 기록합니다. 두 번째로 전체 배열을 스캔하고 각 요소에 대해 위의 전체 곱과 0의 개수를 기준으로 최종 결과를 계산합니다.

그 중 현재 요소가 0이면 특수 처리가 적용됩니다. 배열의 0 개수가 1보다 크면 모든 요소가 0인 배열이 직접 반환되고, 그렇지 않으면 현재 요소의 곱은 0입니다.

5. 테스트 사례:

다음은 여러 테스트 데이터 세트입니다.

$nums = [1, 2, 3, 4];
echo implode(",", productExceptSelf($nums)) // 출력" 24,12,8,6"

$nums = [0, 2, 3, 4];
echo implode(",", productExceptSelf($nums)) // 출력 "24,0,0, 0"

$nums = [1, 0, 3, 4];
echo implode(",", productExceptSelf($nums)); // 출력 "0,12,0,0"

$nums = [ 1, 0, 3, 0];
echo implode(",", productExceptSelf($nums)); // 출력 "0,0,0,0"

6. 요약:

이 글에서는 사용법을 소개합니다. 제거를 구현하는 PHP 현재 요소 뒤의 제품 배열입니다. 최적화 알고리즘을 통해 프로그램의 시간 복잡도를 효과적으로 줄이고 프로그램의 실행 효율성을 향상시킬 수 있습니다. 실제 개발에서는 특정 상황에 따라 배열을 처리하기 위한 최적의 알고리즘을 선택해야 합니다.

위 내용은 PHP는 제품 배열에서 현재 요소를 제외합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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