使用php语言解答下面的题目:在一个乱序的自然数数组中,寻找最大的连续自然数子数组,并输出该子数组。例如:数组【12,6,1,4,5,7, 9】的最大连续自然数子数组为【4,5,6,7】。如果该数组中不存在连续的自然数元素(至少两个),则输出“没有找到”。
题目描述:在一个乱序的自然数数组中,寻找最大的连续自然数子数组,并输出该子数组。例如:数组【12,6,1,4,5,7, 9】的最大连续自然数子数组为【4,5,6,7】。如果该数组中不存在连续的自然数元素(至少两个),则输出“没有找到”。
已知:如果存在最大连续子数组,最大连续子数组有且仅有一个
代码实现
<?php
$arr = [12, 7, 2, 4, 3, 5, 10, 13, 11, 14];
sort($arr);
$newArr = [];
for($k=0; $k<count($arr); $k++){
$tmp=[];
while($arr[$k]+1==$arr[$k+1] && $k+1<count($arr)){
$tmp[]=$arr[$k];
$k++;
}
$tmp[]=$arr[$k];
echo '<br>';
if(count($tmp)>count($newArr)){
$newArr=$tmp;
}
}
if(count($newArr)<2){
echo "没有找到";
}else{
echo "newArr=";
print_r($newArr);
}
?>
上面的代码仅测试了大部分数据,不保证完全正确,如有错误的地方,欢迎大家留言指证
|