php - 从PHP中的NxN矩阵中删除总和最小的行
问题描述
如果原始矩阵是
$input = [
[123, 22, 33],
[1, 2, 1],
[82, 90, 12],
];
输出应如下所示:
$expected = [
[123, 22, 33],
[82, 90, 12],
];
我试图通过 $min_row = $a[$i] 获得最小行,然后在第一个 for 循环中进行比较。
function deleteRowWithSmallestSum($a){
$N=sizeof($a);
$M =sizeof($a);
$mat = array();
// $min_row = $a[$i];
for($i=0; $i<$N; $i++){
$min_row = $a[$i];
if($a[$i]<$min_row){
$a[$i] = $min_row;
unset($a[$i]);
}
for($j=0; $j<$M; $j++){
$mat[$i][$j] = $a[$i][$j];
}
}
return $mat;
}
$a = [[455,1,2],
[1,1,1],
[11,222,3333]];
print_r($a);
deleteRowWithSmallestSum($a);
解决方案
function deleteRowWithSmallestSum($a){
$matrixSizeN = sizeof($a);
if($matrixSizeN==0){
return $a;
}
$minIndex = -1;
if(sizeOf($a[0])!=$matrixSizeN){
// Invalid matrix and do something
}
$minValue = $array_sum($a[0]);
for($i=1; $i<$matrixSizeN; $i++){
if(sizeOf($a[$i])!=$matrixSizeN){
// Invalid matrix and do something
}
$tempValue = $array_sum($a[$i]);
if($tempValue<$minValue){ // open issue about two lines with same minimum
$minValue = $tempValue;
$minIndex = $i;
}
}
if($minIndex!=-1){
unset($a[$minIndex]);
}
return array_values($a);
}
推荐阅读
- c++ - TCP 服务器不接受客户端发出的正确数量的连接,侦听积压较少
- python - 具有多个值的熊猫系列如何正确绘制
- git - 在 Sap Web ide Full Stack 中删除 Git 项目
- jax-rs - 如何在 Meecrowave 中启用 SSE?
- python - 使用列表推导创建剥离的嵌套字符串列表
- reactjs - 我应该使用 Redux store.subscribe() 还是用 react-redux 包装我的应用程序
? - java - 命名查询执行的通用实现
- jhipster - 尝试调用微服务时 JHipster 504 网关超时
- nfc - Proxmark3 rdv4 和 Proxmark3 evo 之间的区别
- c# - 如何使用 Entity Framework 6 在 ASP.NET MVC 5 中保存自定义模型?