PHP 개발에서 배열은 매우 중요한 데이터 구조 중 하나입니다. 그중에서도 배열의 연속된 숫자를 찾는 것은 매우 일반적인 요구 사항입니다. 이 문서에서는 이를 수행하는 다양한 방법을 설명합니다.
루프 순회 방법은 배열에서 연속된 숫자를 찾는 일반적인 방법입니다. 기본 아이디어는 배열의 첫 번째 요소가 시작점이라고 가정하고 이 시작점에서 뒤로 요소를 탐색하고 매번 다음 요소와 현재 요소의 차이가 1인지 계산하는 것입니다. 그렇다면 배열에 연속된 숫자가 있다는 의미입니다. 그렇지 않은 경우 시작점을 재설정하고 계속해서 이동합니다.
샘플 코드는 다음과 같습니다.
function findConsecutiveNumbers($arr){ $res = []; $n = count($arr); for($i=0;$i<$n;$i++){ $j=$i+1; $tmp=[]; $tmp[] = $arr[$i]; while($j<$n && $arr[$j]-$arr[$j-1]==1){ $tmp[] = $arr[$j]; $j++; } if(count($tmp)>1){ $res[] = $tmp; } } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
정렬 방법은 배열에서 연속된 숫자를 찾는 또 다른 일반적인 방법입니다. 기본 아이디어는 먼저 원본 배열을 정렬한 다음 배열 요소를 순서대로 순회하고 각 요소와 이전 요소 간의 차이가 1인지 계산하는 것입니다. 그렇다면 배열에 연속된 숫자가 있다는 의미입니다. 그렇지 않은 경우 시작점을 재설정하고 계속해서 이동합니다.
샘플 코드는 다음과 같습니다.
function findConsecutiveNumbers($arr){ sort($arr); $res = []; $n = count($arr); $tmp = []; for($i=0;$i<$n;$i++){ if(!$i || $arr[$i]-$arr[$i-1]==1){ $tmp[] = $arr[$i]; }else{ if(count($tmp)>1){ $res[] = $tmp; } $tmp = [$arr[$i]]; } } if(count($tmp)>1){ $res[] = $tmp; } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
재귀적 방법은 배열의 연속된 숫자를 찾는 방법이기도 합니다. 각 요소를 재귀적으로 탐색하여 각 요소와 이전 요소의 차이를 확인합니다. 요소는 1입니다. 차이가 1이면 다음 요소로 계속 반복됩니다. 차이가 1이 아니면 연속된 숫자가 끝나고 이전 수준의 재귀가 반환된다는 의미입니다.
샘플 코드는 다음과 같습니다.
function findConsecutiveNumbers($arr) { $res = array(); $n = count($arr); $i = 1; $j = 0; while($i < $n) { if($arr[$i] - $arr[$i-1] == 1) { $i++; } else { $tmp = array_slice($arr, $j, $i-$j); if(count($tmp)>1){ $res[] = $tmp; } $j = $i; $i++; } } $tmp = array_slice($arr, $j, $i-$j); if(count($tmp)>1){ $res[] = $tmp; } return $res; } $arr = [1, 2, 3, 5, 6, 7, 9]; $res = findConsecutiveNumbers($arr); print_r($res); //输出[[1,2,3],[5,6,7]]
요약:
위의 세 가지 방법을 사용하면 배열의 연속된 숫자를 쉽게 찾을 수 있습니다. 그 중 루프 순회 방법과 정렬 방법의 시간 복잡도는 $O(nlogn)$이고, 재귀 방법의 시간 복잡도는 $O(n)$입니다. 따라서 데이터의 양이 많은 경우에는 재귀적 방법을 우선적으로 사용할 수 있습니다.
위 내용은 PHP에서 배열의 연속된 숫자를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!