Leetcode PHP题解--D123 661. Image Smoother
D123 661. Image Smoother
题目链接
题目分析
给定一个二维数组,每一项需要是其周围值的平均值向下取整。
思路
我的做法比较直接,获取周围的值,计算周围元素的个数及其值,取得平均值,填充进新数组就好了。
最终代码
<?php
class Solution {
/**
* @param Integer[][] $M
* @return Integer[][]
*/
function imageSmoother($M) {
$N = $M;
foreach($N as $row => $v){
foreach($v as $col => $v1){
//upRow
$suroundedValues = [
isset($M[$row-1][$col-1]) ? $M[$row-1][$col-1] : null,
isset($M[$row-1][$col ]) ? $M[$row-1][$col ] : null,
isset($M[$row-1][$col+1]) ? $M[$row-1][$col+1] : null,
isset($M[$row ][$col-1]) ? $M[$row ][$col-1] : null,
isset($M[$row ][$col+1]) ? $M[$row ][$col+1] : null,
isset($M[$row+1][$col-1]) ? $M[$row+1][$col-1] : null,
isset($M[$row+1][$col ]) ? $M[$row+1][$col ] : null,
isset($M[$row+1][$col+1]) ? $M[$row+1][$col+1] : null,
];
$filteredValues = array_filter($suroundedValues, function($values){
return !is_null($values);
});
$filteredValues[] = $v1;
$N[$row][$col] = floor(array_sum($filteredValues)/count($filteredValues));
}
}
return $N;
}
}
若觉得本文章对你有用,欢迎用爱发电资助。
No Comments