php一个简单的算法面试题,以及一个思路
有一个文件,里面每一行都是一个url,写一个算法,读取出现最多的五条,及其出现的次数
文件是模拟的数组,如果有更好的方法,可以评论哦
<?php function make_arr() { $urls = array('qwew', 'we2312', 'eewqe', 'r23', 'tewq', 'ey', 'u2', 'ieqw', 'o2', '2p'); $num = count($urls); $arr=array(); for ($i = 0; $i < 1000; $i++) { array_push($arr,"http://www.xxx.com/".$urls[rand(0, $num - 1)]); } return $arr; } $list=make_arr(); function get_result($list, $num) { $sort_arr=array(); for($i=0;$i<count($list);$i++){ if(array_key_exists($list[$i],$sort_arr)){ $sort_arr[$list[$i]]++; }else { $sort_arr[$list[$i]]=1; } } for ($i = 0; $i < $num; $i++) { $keys=array_keys($sort_arr); $key = $keys[0]; foreach ($keys as $k) { if ($sort_arr["$k"] > $sort_arr["$key"]) { $key = $k; } } $results["$key"] = $sort_arr["$key"]; unset($sort_arr["$key"]); } print_r($results); } get_result($list, 5);