The Indian Engineer

Problem 832 Flipping an Image

Posted on 2 mins

Vector Array Matrix

Problem Statement

Link - Problem 832

Question

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.

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

Constraints

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

Solution

class Solution {
public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& matrix) {
        int rows = matrix.size();
        int cols = matrix[0].size();
        vector<vector<int>>v(rows,vector<int>(cols));
        for(int i = 0; i<rows; i++){
            for(int j = 0; j<cols; j++){
                if(matrix[i][j]==1)
                    v[i][cols-1-j] = 0;
                else
                    v[i][cols-1-j] = 1;
            }
        }
        return v;

    }
};

Complexity Analysis

| Algorithm        | Time Complexity | Space Complexity |
| ---------------- | --------------- | ---------------- |
| Matrix Traversal | O(N^2)          | O(N^2)           |

Explanation

1. Intuition

- Just simulate what the question is asking.
- First reverse the each row and then invert the elements.
- But here we are creating a new matrix to store the result.

2. Implementation

- Initialize `rows` and `cols` to store the number of rows and columns.
- Create a new matrix `v` to store the result.
- Traverse through the matrix and do the following
  - If the element is 1 then set the element at `i`th row and `cols-1-j`th column to 0
  - Else set the element at `i`th row and `cols-1-j`th column to 1
- Return the result matrix.