使用php语言解答下面的题目:在一个乱序的自然数数组中,寻找最大的连续自然数子数组,并输出该子数组。如果该数组中不存在连续的自然数元素(至少两个),则输出“没有找到”。

使用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);// 先对数组进行排序由小到大   $arr=[1,4,5,6,7,9,10,11, 12,13];
$newArr = []; // 存放查找出来的最大连续子数组
for($k=0; $k<count($arr); $k++){  // 外层循环,控制从arr中下标0依次查找
    $tmp=[];
    while($arr[$k]+1==$arr[$k+1] && $k+1<count($arr)){ 
    // 找出连续自然数数组,存放到tmp中
        $tmp[]=$arr[$k];
        $k++;
    }
    //存放上面循环中找出的数组最后一个元素
    $tmp[]=$arr[$k];
//    print_r($tmp);
    echo '<br>';
    // 判断,如果新发现了元素更多的子数组,则重新赋值给newArr
    if(count($tmp)>count($newArr)){
        $newArr=$tmp;
    }
}
if(count($newArr)<2){
	echo "没有找到";
}else{
	echo "newArr=";
	print_r($newArr); // 打印找出的最大连续子数组
}
?>

上面的代码仅测试了大部分数据,不保证完全正确,如有错误的地方,欢迎大家留言指证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it_小牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值