832. Flipping an Image #
Problem #
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]]
Example 2:
Input: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
Output: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Explanation: First reverse each row: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]].
Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
Notes:
1 <= A.length = A[0].length <= 200 <= A[i][j] <= 1
Problem Summary #
Given a binary matrix A, we want to first flip the image horizontally, then invert the image and return the result. Flipping an image horizontally means flipping each row of the image, i.e., reversing the order. For example, flipping [1, 1, 0] horizontally results in [0, 1, 1]. Inverting an image means all 0s in the image are replaced by 1s, and all 1s are replaced by 0s. For example, inverting [0, 1, 1] results in [1, 0, 0].
Solution Approach #
- Given a binary matrix, first flip it horizontally, then invert it ( 1→0 , 0→1 ).
- This is an easy problem; just follow the problem statement: flip horizontally first, then invert.
Code #
package leetcode
func flipAndInvertImage(A [][]int) [][]int {
for i := 0; i < len(A); i++ {
for a, b := 0, len(A[i])-1; a < b; a, b = a+1, b-1 {
A[i][a], A[i][b] = A[i][b], A[i][a]
}
for a := 0; a < len(A[i]); a++ {
A[i][a] = (A[i][a] + 1) % 2
}
}
return A
}