php有哪些算法面试题

我们在php中也学习了不少方面的算法知识点,其中的种类就不一一举例,但是在php面试题中会随机抽选出来,以实例的形式进行考察。这点和我们之前遇到的一些面试题不太一样,在这个模块中会专注实际的算法运算结果,复习时也不是没有规律可循。下面我们就带来一些算法中常见的面试题。

1.冒泡排序

每一次冒出一个值

functionbubbleSort($arr)
{
$count=count($arr);
if($count==0)returnfalse;

for($i=0;$i<$count-1;$i++){
for($k=0;$k<$count-1-$i;$k++){
if($arr[$k]<$arr[$k+1]){
$tmp=$arr[$k];
$arr[$k]=$arr[$k+1];
$arr[$k+1]=$tmp;
}
}
}

return$arr;
}

2.给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

php有哪些算法面试题

实现代码

/**
*@paramInteger[]$height
*@returnInteger
*/
functiontrap($height)
{
$len=count($height);
$sum=0;

for($i=1;$i<$len;$i++)
{
$left_max=0;
$right_max=0;

for($j=0;$j<$i;$j++)
{
$left_max=max($left_max,$height[$j]);
}
for($k=$i;$k<$len;$k++)
{
$right_max=max($right_max,$height[$k]);
}
$max=min($left_max,$right_max);
if($max>$height[$i])
{
$sum+=$max-$height[$i];
}
}
return$sum;
}

发表回复