Categories:

Tags:



Problem

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].

Constraints

  • n == image.length
  • n == image[i].length
  • 1 <= n <= 20
  • images[i][j] is either 0 or 1.

Solution

The problem Flipping an Image can be solved by simply reversing and inverting the image as per problem instruction.

Implementation

static const int fast_io = []()
{
    std::ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    return 0;
}();

class Solution
{
  public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>> &image)
    {
        int len = image.size();
        for (int i = 0; i < len; i++)
            for (int j = 0; j < round(len / 2.0); j++)
            {
                int temp = image[i][j];
                image[i][j] = 1 - image[i][len - 1 - j];
                image[i][len - 1 - j] = 1 - temp;
            }

        return image;
    }
};