Related Articles

# Check if the rows of a binary matrix can be made unique by removing a single column

• Last Updated : 06 Jun, 2021

Given a binary matrix mat[][] of size M * N. The task is to check whether the row of the matrix will be unique after deleting a column from the matrix.

Example:

Input: mat[][] = {
{1 0 1},
{0 0 0},
{1 0 0}

Output: Yes
After deleting 2nd column each row of matrix become unique.

Input:mat[][] = {
{1 0},
{1 0}

Output: No

Approach:

• Take matrix as an array of string and each row consider as single string.
• Initialise a variable count = 0 to count duplicate rows in matrix.
• Now take two nested loop outer loop from i = 0 to str.length() and inner loop from j = 0 to i and for each index check if str[i] == str[j] then increment count by 1 and break the loop.
• Now check if count>= 1 then print No else print Yes.

Below is implementation of Above Approach:

## C++

 `// C++ program to check whether the``// Rows of Binary Matrix become unique``// After Deleting a column.``#include ``using` `namespace` `std;` `// Function to check whether rows of``// Binary matrix become unique after``// Deleting a column of from matrix.``int` `uniqueRows(string s[], ``int` `m, ``int` `n)``{``    ``// Initialize variable count that``    ``// stores the count of duplicate rows.``    ``int` `i, j, count = 0;` `    ``// Take two nested loop and``    ``// check weather rows already``    ``// get seen then increment``    ``// count by 1 then break the loop.``    ``for` `(i = 0; i < n; i++) {``        ``for` `(j = 0; j < i; j++) {``            ``if` `(s[i] == s[j]) {``                ``count++;``                ``break``;``            ``}``        ``}``    ``}` `    ``// Check if count>=1 then print No``    ``// Else print Yes.``    ``if` `(count >= 1) {``        ``cout << ``"No"` `<< endl;``    ``}``    ``else` `{``        ``cout << ``"Yes"` `<< endl;``    ``}``    ``return` `0;``}` `// Driver code.``int` `main()``{``    ``int` `m = 3, n = 3;``    ``string s[] = {``        ``{ 1, 0, 1 },``        ``{ 0, 0, 0 },``        ``{ 1, 0, 0 }``    ``};` `    ``// Function calling``    ``uniqueRows(s, m, n);``    ``return` `0;``}`

## Java

 `// Java program to check whether the``// Rows of Binary Matrix become unique``// After Deleting a column.``class` `GFG``{``    ` `// Function to check whether rows of``// Binary matrix become unique after``// Deleting a column of from matrix.``static` `int` `uniqueRows(``int` `[][]s,``                      ``int` `m, ``int` `n)``{``    ``// Initialize variable count that``    ``// stores the count of duplicate rows.``    ``int` `i, j, count = ``0``;` `    ``// Take two nested loop and``    ``// check weather rows already``    ``// get seen then increment``    ``// count by 1 then break the loop.``    ``for` `(i = ``0``; i < n; i++)``    ``{``        ``for` `(j = ``0``; j < i; j++)``        ``{``            ``if` `(s[i] == s[j])``            ``{``                ``count++;``                ``break``;``            ``}``        ``}``    ``}` `    ``// Check if count>=1 then print No``    ``// Else print Yes.``    ``if` `(count >= ``1``)``        ``System.out.println(``"No"``);``    ``else``        ``System.out.println(``"Yes"``);``    ``return` `0``;``}` `// Driver code.``public` `static` `void` `main(String[] args)``{``    ``int` `m = ``3``, n = ``3``;``    ``int` `s[][] = { { ``1``, ``0``, ``1` `},``                  ``{ ``0``, ``0``, ``0` `},``                  ``{ ``1``, ``0``, ``0` `} };` `    ``// Function calling``    ``uniqueRows(s, m, n);``}``}` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python3 program to check whether the``# Rows of Binary Matrix become unique``# After Deleting a column.` `# Function to check whether rows of``# Binary matrix become unique after``# Deleting a column of from matrix.``def` `uniqueRows(s, m, n):``    ` `    ``# Initialize variable count that``    ``# stores the count of duplicate rows.``    ``i, j, count ``=` `0``, ``0``, ``0` `    ``# Take two nested loop and``    ``# check weather rows already``    ``# get seen then increment``    ``# count by 1 then break the loop.``    ``for` `i ``in` `range``(n):``        ``for` `j ``in` `range``(i):``            ``if` `(s[i] ``=``=` `s[j]):``                ``count ``+``=` `1``                ``break` `    ``# Check if count>=1 then prNo``    ``# Else prYes.``    ``if` `(count >``=` `1``):``        ``print``(``"No"` `)``    ``else``:``        ``print``(``"Yes"``)` `# Driver code.``m ``=` `3``n ``=` `3``s ``=` `[[ ``1``, ``0``, ``1` `],``     ``[ ``0``, ``0``, ``0` `],``     ``[ ``1``, ``0``, ``0` `]]` `uniqueRows(s, m, n)` `# This code is contributed by Mohit Kumar`

## C#

 `// C# iprogram to check whether the``// Rows of Binary Matrix become unique``// After Deleting a column.``using` `System;``    ` `class` `GFG``{``    ` `// Function to check whether rows of``// Binary matrix become unique after``// Deleting a column of from matrix.``static` `int` `uniqueRows(``string` `[]s,``                      ``int` `m, ``int` `n)``{``    ``// Initialize variable count that``    ``// stores the count of duplicate rows.``    ``int` `i, j, count = 0;` `    ``// Take two nested loop and``    ``// check weather rows already``    ``// get seen then increment``    ``// count by 1 then break the loop.``    ``for` `(i = 0; i < n; i++)``    ``{``        ``for` `(j = 0; j < i; j++)``        ``{``            ``if` `(s[i] == s[j])``            ``{``                ``count++;``                ``break``;``            ``}``        ``}``    ``}` `    ``// Check if count>=1 then print No``    ``// Else print Yes.``    ``if` `(count >= 1)``        ``Console.WriteLine(``"No"``);``    ``else``        ``Console.WriteLine(``"Yes"``);``    ``return` `0;``}` `// Driver code.``public` `static` `void` `Main(String[] args)``{``    ``int` `m = 3, n = 3;``    ``string` `[]s = { ``"101"``,``"000"``, ``"100"``};` `    ``// Function calling``    ``uniqueRows(s, m, n);``}``}``    ` `// This code is contributed by Princi Singh`

## Javascript

 ``
Output:
`Yes`

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up