meta data for this page
  •  

Flipping an Image

Leetcode


Given an n x n binary matrix image, 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: image = [[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: image = [[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]]

Solution 1

Solution 1

def flipAndInvertImage(self, image: List[List[int]]) -> List[List[int]]:
    res = []
    for i in image:
        res.append([x ^ 1 for x in i[::-1]])
    return res

Solution 2

Solution 2

class Solution:
    def flipAndInvertImage(self, image: List[List[int]]) -> List[List[int]]:
        for i in range(0, len(image)):
            image[i] = self.flipAndInvert(image[i])
        return image
 
    def flipAndInvert(self, image: List[int]) -> List[int]:
        n = len(image)
        m = n // 2
        l, r = 0, n - 1
 
        if n % 2 == 1:
            image[m] ^= 1
 
        while l < r:
            tmp = image[l]
            image[l] = image[r] ^ 1
            image[r] = tmp ^ 1
            l += 1
            r -= 1
 
        return image