Check if a given matrix is sparse or not
Last Updated :
20 Jul, 2022
A matrix is a two-dimensional data object having m rows and n columns, therefore a total of m*n values. If most of the values of a matrix are 0 then we say that the matrix is sparse.
Consider a definition of Sparse where a matrix is considered sparse if the number of 0s is more than half of the elements in the matrix,
Examples:
Input : 1 0 3
0 0 4
6 0 0
Output : Yes
There are 5 zeros. This count
is more than half of matrix
size.
Input : 1 2 3
0 7 8
5 0 7
Output: No
To check whether a matrix is a sparse matrix, we only need to check the total number of elements that are equal to zero. If this count is more than (m * n)/2, we return true.
Implementation:
C++
#include <iostream>
using namespace std;
const int MAX = 100;
bool isSparse( int array[][MAX], int m, int n)
{
int counter = 0;
for ( int i = 0; i < m; ++i)
for ( int j = 0; j < n; ++j)
if (array[i][j] == 0)
++counter;
return (counter > ((m * n) / 2));
}
int main()
{
int array[][MAX] = { { 1, 0, 3 },
{ 0, 0, 4 },
{ 6, 0, 0 } };
int m = 3,
n = 3;
if (isSparse(array, m, n))
cout << "Yes" ;
else
cout << "No" ;
}
|
Java
import java.io.*;
class GFG {
static int MAX = 100 ;
static boolean isSparse( int array[][], int m, int n)
{
int counter = 0 ;
for ( int i = 0 ; i < m; ++i)
for ( int j = 0 ; j < n; ++j)
if (array[i][j] == 0 )
++counter;
return (counter > ((m * n) / 2 ));
}
public static void main(String args[])
{
int array[][] = { { 1 , 0 , 3 },
{ 0 , 0 , 4 },
{ 6 , 0 , 0 } };
int m = 3 ,
n = 3 ;
if (isSparse(array, m, n))
System.out.println( "Yes" );
else
System.out.println( "No" );
}
}
|
Python3
MAX = 100
def isSparse(array,m, n) :
counter = 0
for i in range ( 0 ,m) :
for j in range ( 0 ,n) :
if (array[i][j] = = 0 ) :
counter = counter + 1
return (counter >
((m * n) / / 2 ))
array = [ [ 1 , 0 , 3 ],
[ 0 , 0 , 4 ],
[ 6 , 0 , 0 ] ]
m = 3
n = 3
if (isSparse(array, m, n)) :
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class GFG {
static bool isSparse( int [,]array, int m,
int n)
{
int counter = 0;
for ( int i = 0; i < m; ++i)
for ( int j = 0; j < n; ++j)
if (array[i,j] == 0)
++counter;
return (counter > ((m * n) / 2));
}
public static void Main()
{
int [,]array = { { 1, 0, 3 },
{ 0, 0, 4 },
{ 6, 0, 0 } };
int m = 3,
n = 3;
if (isSparse(array, m, n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
}
|
PHP
<?php
$MAX = 100;
function isSparse( $array , $m , $n )
{
$counter = 0;
for ( $i = 0; $i < $m ; ++ $i )
for ( $j = 0; $j < $n ; ++ $j )
if ( $array [ $i ][ $j ] == 0)
++ $counter ;
return ( $counter > (( $m * $n ) / 2));
}
$array = array ( array (1, 0, 3),
array (0, 0, 4),
array (6, 0, 0));
$m = 3;
$n = 3;
if (isSparse( $array , $m , $n ))
echo "Yes" ;
else
echo "No" ;
?>
|
Javascript
<script>
let MAX = 100;
function isSparse(array, m, n)
{
let counter = 0;
for (let i = 0; i < m; ++i)
for (let j = 0; j < n; ++j)
if (array[i][j] == 0)
++counter;
return (counter > parseInt((m * n) / 2), 10);
}
let array = [ [ 1, 0, 3 ],
[ 0, 0, 4 ],
[ 6, 0, 0 ] ];
let m = 3,
n = 3;
if (isSparse(array, m, n))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Time Complexity: O(m*n)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...