Given a binary matrix. The task is to flip the matrix horizontally(find the image of the matrix), then invert it.
Note:
- To flip a matrix horizontally means that reversing each row of the matrix. For example, flipping [1, 1, 0, 0] horizontally results in [0, 0, 1, 1].
- To inverta matrix means that replacing each 0 by 1 and vice-versa. For example, inverting [0, 0, 1] results in [1, 1, 0].
Examples:
Input: mat[][] = [[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]] Input: mat[][] = [[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]]
Approach: We can do this in-place. On observing carefully, it can be deduced that in each row in the final matrix, the i-th value from the left is equal to the inverse of the i-th value from the right of the input binary matrix.
Thus, we use (Column + 1) / 2 (with floor division) to iterate over all indexes in the first half of the row, including the centre and updating the answer accordingly.
Below is the implementation of above approach:
# Python3 implementation of above approach # Function to return final Image def fliped_Invert_Image(mat): for row in mat: for i in range (( len (row) + 1 ) / / 2 ): row[i] = row[ len (row) - 1 - i] ^ 1 row[ len (row) - 1 - i] = row[i] ^ 1 # return Flipped and Inverted image return mat # Driver code mat = [[ 1 , 1 , 0 , 0 ], [ 1 , 0 , 0 , 1 ], [ 0 , 1 , 1 , 1 ], [ 1 , 0 , 1 , 0 ]] print (fliped_Invert_Image(mat)) |
[[1, 1, 0, 0], [0, 1, 0, 1], [0, 0, 1, 1], [1, 0, 1, 0]]
Time Complexity: O(N*M), where N is the number of rows and M is the number of columns in the given binary matrix.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.