题目描述
求一个矩阵中最大的二维矩阵(元素和最大),如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;
题目来源及自己的思路
最近面试遇到的一道题,我是面试PHP开发
求一个矩阵中最大的二维矩阵(元素和最大),如:
1 2 0 3 4
2 3 4 5 1
1 1 5 3 0
中最大的是:
4 5
5 3
要求:(1)写出算法;(2)分析时间复杂度;
最近面试遇到的一道题,我是面试PHP开发
/**
* @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));
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
/**
* 求一个矩阵中最大的二维矩阵(元素和最大)
* @param unknown $arr 二维矩阵
* @param unknown $row 二维矩阵行数
* @param unknown $col 二维矩阵列数
* @return unknown[][]
*/
php
javascript