PHP如何判断一个一维数组中有N个连续数的算法


例如有一个数组为: $array = (21,25,54,1,55,1,2,8,9);//该数组中的元素都是唯一的
不知道大神们都有什么方法?正确返回true,错误返回false。
简单来说2,3,4是三个连续数,我想知道,如何处理才能知道一个一维数组中有N个连续数。N为我指定要判断几个。
下面是我自己写的一个方法,但是觉得是很笨的方法,想看看有没有高手给出更好的方法,一方面学习一下,另一方面可以拓展下自己设计程序的思路。

   
  function getconsecutive($arr,$n){
  
sort($arr);
$temp = array();
$status = 0;
foreach($arr as $k =>$v){
$i = 0;
while($i<=$n){
$temp[$i] = $v+$i; $i++;
}
$count_common = array_intersect($arr,$temp);
if(count($count_common)>$n){
$status = 1;
}
return $status;
}
}

php 算法

前方步惊云出没 12 years, 8 months ago

主要就是排序后判断相邻的两个,你试试满足要求不。

   
  function getconsecutive($arr,$n){
  
sort($arr);
$m = 1;
for($i=0,$t = count($arr) - 1;$i < $t;$i++) {
$m = $arr[$i] + 1 == $arr[$i + 1] ? $m + 1 : 1;
if($m >= $n) return true;
}
return false;
}

草泥马MT answered 12 years, 8 months ago

Your Answer