Skip to content
Related Articles

Related Articles

Check if the rows of a binary matrix can be made unique by removing a single column
  • Last Updated : 18 Oct, 2019

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 <bits/stdc++.h>
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
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 industry experts, please refer Geeks Classes Live and Geeks Classes Live USA

My Personal Notes arrow_drop_up
Recommended Articles
Page :