Count of columns with odd number of 1s

Given an N * M 2D binary matrix, the task is to find the count of columns having odd number of 1s.

Examples:

Input: mat[][] = {
{0, 0, 1, 0},
{1, 0, 0, 1},
{1, 1, 1, 0}}
Output: 2
Column 2 and 4 are the only columns
having odd number of 1’s.



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

Approach: Find the sum of all the columns of the matrix separately, the columns having an odd sum are the columns which have an odd number of 1s.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <iostream>
using namespace std;
  
const int col = 4;
const int row = 3;
  
// Function to return the count of
// columns having odd number of 1s
int countOddColumn(int arr[row][col])
{
  
    // To store the sum of every column
    int sum[col] = { 0 };
  
    // For every column
    for (int i = 0; i < col; i++) {
  
        // Sum of all the element
        // of the current column
        for (int j = 0; j < row; j++) {
            sum[i] += arr[j][i];
        }
    }
  
    // To store the required count
    int count = 0;
  
    for (int i = 0; i < col; i++) {
  
        // If the sum of the current
        // column is odd
        if (sum[i] % 2 == 1) {
            count++;
        }
    }
  
    return count;
}
  
// Driver code
int main()
{
    int arr[row][col] = { { 0, 0, 1, 0 },
                          { 1, 0, 0, 1 },
                          { 1, 1, 1, 0 } };
  
    cout << countOddColumn((arr));
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG
{
static int col = 4;
static int row = 3;
  
// Function to return the count of
// columns having odd number of 1s
static int countOddColumn(int arr[][])
{
  
    // To store the sum of every column
    int []sum = new int[col];
  
    // For every column
    for (int i = 0; i < col; i++)
    {
  
        // Sum of all the element
        // of the current column
        for (int j = 0; j < row; j++) 
        {
            sum[i] += arr[j][i];
        }
    }
  
    // To store the required count
    int count = 0;
  
    for (int i = 0; i < col; i++)
    {
  
        // If the sum of the current
        // column is odd
        if (sum[i] % 2 == 1
        {
            count++;
        }
    }
    return count;
}
  
// Driver code
public static void main(String []args) 
{
    int arr[][] = {{ 0, 0, 1, 0 },
                   { 1, 0, 0, 1 },
                   { 1, 1, 1, 0 }};
  
    System.out.println(countOddColumn((arr)));
}
}
  
// This code is contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach
col = 4
row = 3
  
# Function to return the count of
# columns having odd number of 1s
def countOddColumn(arr):
  
    # To store the sum of every column
    sum = [0 for i in range(col)]
  
    # For every column
    for i in range(col):
  
        # Sum of all the element
        # of the current column
        for j in range(row):
            sum[i] += arr[j][i]
  
    # To store the required count
    count = 0
  
    for i in range(col):
  
        # If the sum of the current
        # column is odd
        if (sum[i] % 2 == 1):
            count += 1
  
    return count
  
# Driver code
arr = [[0, 0, 1, 0],
       [1, 0, 0, 1],
       [1, 1, 1, 0]]
  
print(countOddColumn((arr)))
  
# This code is contributed by Mohit Kumar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach 
using System;
  
class GFG 
    static int col = 4; 
    static int row = 3; 
      
    // Function to return the count of 
    // columns having odd number of 1s 
    static int countOddColumn(int [,]arr) 
    
      
        // To store the sum of every column 
        int []sum = new int[col]; 
      
        // For every column 
        for (int i = 0; i < col; i++) 
        
      
            // Sum of all the element 
            // of the current column 
            for (int j = 0; j < row; j++) 
            
                sum[i] += arr[j, i]; 
            
        
      
        // To store the required count 
        int count = 0; 
      
        for (int i = 0; i < col; i++) 
        
      
            // If the sum of the current 
            // column is odd 
            if (sum[i] % 2 == 1) 
            
                count++; 
            
        
        return count; 
    
      
    // Driver code 
    public static void Main() 
    
        int [,]arr = {{ 0, 0, 1, 0 }, 
                      { 1, 0, 0, 1 }, 
                      { 1, 1, 1, 0 }}; 
      
        Console.WriteLine(countOddColumn((arr))); 
    
}
  
// This code is contributed by kanugargng

chevron_right


Output:

2


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.