Search⌘ K
AI Features

Flipping an Image

Explore how to flip an n by n binary image horizontally and invert its pixels by replacing zeros with ones and vice versa. Understand the key bitwise operations that enable efficient manipulation of image data in matrix form. Practice solving this problem step-by-step to strengthen your approach to similar coding interview questions using C++.

Statement

Given that an image is represented by an (n×n)(n \times n) matrix containing 00s and 11s, flip and invert the image, and return the resultant image.

Horizontally flipping an image means that the mirror image of the matrix should be returned. Flipping [1,0,0][1, 0, 0] horizontally results in [0,0,1][0, 0, 1].

Inverting an image means that every 00 is replaced by 11, and every 11 is replaced by 00. Inverting [0,1,1][0, 1, 1] results in [1,0,0][1, 0, 0].

Constraints:

  • Image should be a square matrix.
  • 1n201 \leq n \leq 20
  • images[i][j] is either 00 or 11.

Examples

Understand the problem

Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:

Flipping an Image

1.

Consider the following (3×3)(3 \times 3) matrix as input. What is the output once it has been flipped and inverted?

[110001011]\begin{bmatrix} 1 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}

A.

[110001011]\begin{bmatrix} 1 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}

B.

[100011001] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{bmatrix}

C.

[110101011] \begin{bmatrix} 1 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}


1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4
5

Try it yourself

Implement your solution in the following coding playground:

C++
usercode > FlippingImage.cpp
#include <iostream>
vector<vector<int>> FlipAndInvertImage(vector<vector<int>> image)
{
// Replace this placeholder return statement with your code
return image;
}
Flipping an Image