我们在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 个单位的雨水(蓝色部分表示雨水)。
实现代码
/** *@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; }