PHP 개발에서는 일련의 숫자에서 불연속적인 숫자를 찾아야 하는 경우가 많습니다. 이 요구 사항을 빠르고 효율적으로 실현하는 방법은 무엇입니까? 이 기사에서는 이에 대해 자세히 설명합니다.
1. 문제 배경
일련의 숫자에서 불연속적인 숫자를 찾아보세요. 즉, 특정 숫자 다음 숫자에서 일정한 간격을 두고 있는 숫자를 찾아보세요. 예를 들어 시퀀스 [1, 2, 6, 7, 9, 12, 15, 17]이 있고 불연속적인 숫자를 찾으라고 요청하면 간격이 4라고 가정하면 반환 값은 [2, 9, 17]입니다.
2. 문제 분석
이 요구 사항을 달성하려면 전체 숫자 시퀀스를 순회하고 각 숫자에 대해 다음 처리를 수행해야 합니다.
특정 구현에서는 다음 방법을 사용할 수 있습니다.
숫자의 순서를 탐색하고 각 숫자를 처리합니다.
구체적인 구현 코드는 다음과 같습니다.
function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; foreach ($nums as $num) { if (!is_null($previous) && $num - $previous == $interval) { $result[] = $num; } $previous = $num; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
3. 코드 최적화
위 구현은 이미 요구 사항을 충족할 수 있지만 실제 사용에서는 효율적이지 않을 수 있습니다. 다음 최적화를 고려하십시오.
최적화된 코드는 다음과 같습니다.
function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; $last_discontinuous_index = null; // 上一次不连续数字的索引位置 for ($i = 0; $i < count($nums); ) { if (!is_null($previous)) { if ($nums[$i] - $previous == $interval) { $result[] = $nums[$i]; } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } $i += ($i == $last_discontinuous_index + 1) ? 1 : $interval; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
IV. 요약
이 기사에서는 PHP에서 불연속 숫자를 찾는 방법을 간략하게 소개하고 기본 구현을 제공합니다. 실제 사용에서는 더 나은 성능과 효과를 달성하기 위해 다양한 요구에 따라 적절한 구현 방법과 최적화 조치를 선택해야 합니다.
위 내용은 PHP의 일련의 숫자에서 연속되지 않은 숫자를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!