php – 快速查找多维数组中最大的数组?
发布时间:2020-12-13 21:50:51 所属栏目:PHP教程 来源:网络整理
导读:情况:我有一个具有可变数量元素的多维数组.例如 array(N) { 0 = array(3) { ... },1 = array(8) { ... },2 = array(1) { ... },... M = array(12) { ... },... N-1 = array(7) { ... }} 我想找到这个子数组中的最大元素数(在上面的例子中,它将是12).一个简
情况:我有一个具有可变数量元素的多维数组.例如
array(N) { 0 => array(3) { ... },1 => array(8) { ... },2 => array(1) { ... },... M => array(12) { ... },... N-1 => array(7) { ... } } 我想找到这个子数组中的最大元素数(在上面的例子中,它将是12).一个简单的解决方案是O(N)线性搜索. <?php function max_length($2d_array) { $max = 0; foreach($2d_array as $child) { if(count($child) > $max) { $max = count($child); } } return $max; } 但是,我不禁想知道是否有一些聪明的技巧来优化这种查找.所以我的问题是两个部分(虽然任何一个部分的答案都会解决它): >是否有一种算法比O(N)更快地执行此搜索而不需要特殊要求(预先排序等)? 解决方法
不确定性能,但我认为以下应该有效:
$count = array_map('count',$input_arr); $min = array_keys($count,max($count))[0]; $largest_arr = $input_arr[$min]; 甚至: $counts = array_map('count',$input_arr); $key = array_flip($counts)[max($counts)]; $largest_arr = $input_arr[$key]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |