📜  用于确定给定矩阵是否为稀疏矩阵的Java程序

📅  最后修改于: 2022-05-13 01:55:27.393000             🧑  作者: Mango

用于确定给定矩阵是否为稀疏矩阵的Java程序

矩阵是具有 m 行和 n 列的二维数据对象,因此总共有 m*n 个值。如果矩阵的大多数值都是 0,那么我们称该矩阵为稀疏矩阵。因此,我们的目标是计算矩阵中存在的 0 的数量。如果它们超过矩阵中元素的一半,则打印YES ,否则打印NO作为输出。

例子:

Input:  1 0 3
        0 0 4
        6 0 0
Output: Yes
Explaination:There are 5 zeros in the matrix which 
          is more than half of the matrix size.

Input:  1 2 3
        0 7 8
        5 0 7 
Output: No 
Explaination:There are 2 zeros in the matrix which 
             is less than half of the matrix size.

要检查矩阵是否是稀疏矩阵,我们只需要检查等于零的元素总数。如果此计数大于 (m * n)/2,则打印 Yes else No。有两种方法可以这样做。

在这种方法中,我们将检查矩阵是否是稀疏矩阵。

  1. 取矩阵。
  2. 一一遍历矩阵的元素并计算零的数量。
  3. 检查计数是否大于 (m*n)/2,如果是,则否。

下面是上述方法的实现:

Java
// Java Program to Determine if a given
// Matrix is a Sparse Matrix
  
// Importing Libraries
import java.io.*;
  
class GFG {
  
    // Driver Function
    public static void main(String args[])
    {
        // Initialising and declaring
        // variables and array
  
        int array[][]
            = { { 1, 0, 3 }, { 0, 0, 4 }, { 6, 0, 0 } };
  
        int m = 3;
        int n = 3;
        int counter = 0;
  
        // Count number of zeros in the matrix
  
        for (int i = 0; i < m; ++i)
            for (int j = 0; j < n; ++j)
                if (array[i][j] == 0)
                    ++counter;
  
        // Printing result
  
        if (counter > ((m * n) / 2))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}


输出
Yes

时间复杂度: O(m*n)