本文介紹了大O符號(hào)O(NM)或(N^2)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我被告知下面的代碼是=O(MN),但是,我得到了O(N^2)。哪一項(xiàng)是正確答案?為什么?
我的思維過(guò)程:
嵌套的for循環(huán)加上if語(yǔ)句–>(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指的是什么?我的假設(shè)是它分別指”行”和”列”。如果是這樣,則方程為O(MN),因?yàn)槟h(huán)了M個(gè)N次。
如果行和列相等,則O(N^2)將是正確的。
這篇關(guān)于大O符號(hào)O(NM)或(N^2)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,