大O符号O(NM)或(N^2) [英] Big O notation O(NM) or (N^2)

查看:48
本文介绍了大O符号O(NM)或(N^2)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我被告知下面的代码是=O(MN),但是,我得到了O(N^2)。哪一项是正确答案?为什么?

我的思维过程: 嵌套的for循环加上if语句-->(O(N^2)+O(1))+(O(N^2)+O(1))=O(N^2)

谢谢

public static void zeroOut(int[][] matrix) { 
    int[] row = new int[matrix.length];
    int[] column = new int[matrix[0].length];
// Store the row and column index with value 0 
 for (int i = 0; i < matrix.length; i++)
   {
    for (int j = 0; j < matrix[0].length;j++) { 
       if (matrix[i][j] == 0) 
          {
            row[i] = 1;
            column[j] = 1; 
          }
   } 
  }
// Set arr[i][j] to 0 if either row i or column j has a 0 
for (int i = 0; i < matrix.length; i++)
 {
   for (int j = 0; j < matrix[0].length; j++)
      { 
        if ((row[i] == 1 || column[j] == 1)){
              matrix[i][j] = 0; 
           }
      } 
  }
}

推荐答案

M和N指的是什么?我的假设是它分别指"行"和"列"。如果是这样,则方程为O(MN),因为您循环了M个N次。

如果行和列相等,则O(N^2)将是正确的。

这篇关于大O符号O(NM)或(N^2)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆