我正在解决一个编程问题(反转然后反转数组。)它反转它但不反转它。
问题
给定一个二进制矩阵 A,我们希望水平翻转图像,然后反转它,并返回结果图像。
水平翻转图像意味着图像的每一行都被反转。例如,水平翻转 [1, 1, 0] 会导致 [0, 1, 1]。
反转图像意味着每个 0 被 1 替换,每个 1 被 0 替换。例如,反转 [0, 1, 1] 导致 [1, 0, 0]。
Example 1:
Input: [[1,1,0],[1,0,1],[0,0,0]]
Output: [[1,0,0],[0,1,0],[1,1,1]]
Explanation: First reverse each row: [[0,1,1],[1,0,1],[0,0,0]].
Then, invert the image: [[1,0,0],[0,1,0],[1,1,1]]
代码:
class Solution {
/**
* @param Integer[][] $A
* @return Integer[][]
*/
function flipAndInvertImage($A) {
$B=[]; //flipped
$i=strlen($A);
$a=0;
foreach($A as $item)
{
$B[$a]=array_reverse($item);
$a++;
}
// return $B;
$C=[];
for($b=0;$b<=count($B);$b++)
{
foreach($B[$b] as $mini)
{
if($mini==1)
{
$C[$b]=0;
}
else
$C[$b]=1;
}
}
return $C;
}
}
最佳答案
你可以使用 array_map和 array_reverse .
每个数组条目首先反转数组,然后使用数组映射再次使用 1 - $val
翻转 1 和 0。
$arrays = [[1,1,0],[1,0,1],[0,0,0]];
$arrays = array_map(function($array){
return array_map(function($val) { return 1 - $val;}, array_reverse($array));
}, $arrays);
print_r($arrays);
结果
Array
(
[0] => Array
(
[0] => 1
[1] => 0
[2] => 0
)
[1] => Array
(
[0] => 0
[1] => 1
[2] => 0
)
[2] => Array
(
[0] => 1
[1] => 1
[2] => 1
)
)
关于php - 反转和反转数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56727897/