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]]
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 <= 20
0 <= A[i][j] <= 1
给定二进制矩阵A,我们想要水平翻转图像,然后反转它,并返回结果图像。
水平翻转图像意味着图像的每一行都是相反的。例如,水平翻转 [1, 1, 0] 会产生 [0, 1, 1] 。
反转图像意味着每个 0 被 1 替换,每个 1 被 0 替换。例如,反转 [0, 1, 1] 会产生 [1, 0, 0] 。
public class FlippingAnImage { public int[][] flipAndInvertImage(int[][] A) { int[][] res = new int[A.length][]; for (int i = 0; i < A.length; i++) { res[i] = reverse(A[i]); } return res; } private int[] reverse(int[] reverseTemp) { for (int i = 0; i < reverseTemp.length / 2; i++) { int t = reverseTemp[i]; reverseTemp[i] = reverseTemp[reverseTemp.length - i - 1]; reverseTemp[reverseTemp.length - i - 1] = t; } for (int i = 0; i < reverseTemp.length; i++) { if (reverseTemp[i] == 0){ reverseTemp[i] = 1; }else { reverseTemp[i] = 0; } } return reverseTemp; } public static void main(String[] args) { FlippingAnImage flippingAnImage = new FlippingAnImage(); int[][] A = {{1, 1, 0}, {1, 0, 1}, {0, 0, 0}}; flippingAnImage.flipAndInvertImage(A); } }