猿问

请教面试题:求矩阵中最大的二维矩阵

题目描述

求一个矩阵中最大的二维矩阵(元素和最大),如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;

题目来源及自己的思路

最近面试遇到的一道题,我是面试PHP开发

Cats萌萌
浏览 517回答 1
1回答

至尊宝的传说

/** * @param $x 矩阵长度 * @param $y 矩阵高度 * @param $arr 矩阵数组 * @return array 组成最大值的value */ function get_max_value($x,$y,$arr){ $count=count($arr); if($x*$y!=$count){//判断是否是完整矩阵 return false; } $list=array_chunk($arr,$x);//分割原数组 $max=0;//初始化组成的最大值为0 for($b1=1;$b1<$y;$b1++){//二维矩阵y轴坐标 for($a1=0;$a1<$x-1;$a1++){//二维矩阵x轴坐标 $s=$list[$b1-1][$a1]+$list[$b1-1][$a1+1]+$list[$b1][$a1]+$list[$b1][$a1+1]; if($s>$max){ $max=$s; unset($max_arr); $max_arr[]=[$list[$b1-1][$a1],$list[$b1-1][$a1+1],$list[$b1][$a1],$list[$b1][$a1+1]]; }elseif($s==$max){//判断同时存在多个最大值 $max_arr[]=[$list[$b1-1][$a1],$list[$b1-1][$a1+1],$list[$b1][$a1],$list[$b1][$a1+1]]; } } } return $max_arr; } $arr=[1 ,2, 0, 3, 4, 2, 3, 4, 5, 1, 1, 1, 5, 3, 0]; print_r(get_max_value(5,3,$arr));
随时随地看视频慕课网APP
我要回答