为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
Cats萌萌 2019-03-06 13:01:19
题目描述 求一个矩阵中最大的二维矩阵(元素和最大),如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度; 题目来源及自己的思路 最近面试遇到的一道题,我是面试PHP开发
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

/**
 * @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));
查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信