PHP의 일련의 숫자에서 연속되지 않은 숫자를 찾는 방법

PHPz
풀어 주다: 2023-04-05 13:41:40
원래의
690명이 탐색했습니다.

PHP 개발에서는 일련의 숫자에서 불연속적인 숫자를 찾아야 하는 경우가 많습니다. 이 요구 사항을 빠르고 효율적으로 실현하는 방법은 무엇입니까? 이 기사에서는 이에 대해 자세히 설명합니다.

1. 문제 배경

일련의 숫자에서 불연속적인 숫자를 찾아보세요. 즉, 특정 숫자 다음 숫자에서 일정한 간격을 두고 있는 숫자를 찾아보세요. 예를 들어 시퀀스 [1, 2, 6, 7, 9, 12, 15, 17]이 있고 불연속적인 숫자를 찾으라고 요청하면 간격이 4라고 가정하면 반환 값은 [2, 9, 17]입니다.

2. 문제 분석

이 요구 사항을 달성하려면 전체 숫자 시퀀스를 순회하고 각 숫자에 대해 다음 처리를 수행해야 합니다.

  1. 현재 숫자와 이전 숫자의 차이가 지정된 것과 같은지 확인하세요. 간격이 같으면 이 숫자가 불연속 숫자 중 하나임을 나타내고, 같지 않으면 숫자가 현재 숫자로 기록됩니다.
  2. 기록된 숫자를 결과 배열에 추가하고 마지막으로 결과 배열을 반환합니다.

특정 구현에서는 다음 방법을 사용할 수 있습니다.

  1. 불연속 숫자를 저장하기 위해 $result 배열을 정의합니다.
  2. 이전 숫자를 기록하려면 $previous 변수를 정의하세요.
  3. 숫자의 순서를 탐색하고 각 숫자를 처리합니다.

    1. 이 숫자와 이전 숫자의 차이가 지정된 간격과 같으면 해당 숫자를 $result 배열에 추가합니다.
    2. 그렇지 않으면 숫자를 $previous로 기록합니다.
  4. $result 배열을 반환합니다.

구체적인 구현 코드는 다음과 같습니다.

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. 코드 최적화

위 구현은 이미 요구 사항을 충족할 수 있지만 실제 사용에서는 효율적이지 않을 수 있습니다. 다음 최적화를 고려하십시오.

  1. 숫자가 불연속 숫자로 기록되면 다음 숫자는 연속될 수 없으므로 다음 처리 전에 $previous를 이 불연속 숫자로 설정할 수 있습니다.
  2. 차이가 큰 디지털 시퀀스를 검색하는 경우 순회 과정에서 마지막 불연속 번호의 위치를 기록하고 이 위치에서 바로 다음 검색을 처리할 수 있어 불필요한 순회를 줄일 수 있습니다.

최적화된 코드는 다음과 같습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!