发布于 5年前

php 求出回旋数组的最小值

问题描述:

$arr=[1,2,3,4,5,6,7,8,9,10];//自增
$arr1=[5,6,7,8,9,10,1,2,3,4];//是回旋数组
//输出1,

原理: 每次跳过 2*n ,符合条件的情况下,再 n-- 至符合条件的数

代码:

<?php
//$arr=[1,2,3,4,5,6,7,8,9,10];
$arr1=[5,6,7,8,9,10,1,2,3,4];//输出1

var_export(getMin($arr1,1,true));

function getMin($arr1,$step,$state){
    $length=count($arr1);
    if($step>=$length){
        $step=$length-1;
    }
    if($arr1[0]<$arr1[$step]&&$state){
        if($step==($length-1)){
            return $arr1[0];
        }
        $step=2*$step;
        $min=getMin($arr1,$step,$state);
    }else{
        $step--;
        if($arr1[0]>$arr1[$step]){
            $min=getMin($arr1,$step,false);
        }else{
            return $arr1[$step+1];
        }
    }
    return $min;
}

输出:

1
©2020 edoou.com   京ICP备16001874号-3