2019-03-25-flipping an image

题目,832. Flipping an Image

Given a binary matrix A, we want to flip the image horizontally, then invert it, and return the resulting image.

To flip an image horizontally means that each row of the image is reversed. For example, flipping [1, 1, 0] horizontally results in [0, 1, 1].

To invert an image means that each 0 is replaced by 1, and each 1 is replaced by 0. For example, inverting [0, 1, 1] results in [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]]

解析

二进制的数组,先水平交换,在0,1互换

先reverse,然后1减去每个元素得到反转

1
2
3
4
5
6
7
8
var flipAndInvertImage = function(A) {
let res = A.map(arr => {
return arr.reverse().map(e => {
return 1-e;
});
})
return res;
};

直接遍历二维数组,交换反转每个值

1
2
3
4
5
6
7
8
9
10
11
var flipAndInvertImage = function(A) {
let len = A[0].length;
for(let i=0; i<A.length; i++){
for(let j=0; j<len/2; j++) {
let temp = A[i][j];
A[i][j] = 1-A[i][len-j-1];
A[i][len-j-1] = 1-temp;
}
}
return A;
};