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 중국어 웹사이트의 기타 관련 기사를 참조하세요!