leetcode 73 矩陣置零

2021-10-01 10:32:50 字數 796 閱讀 9885

這個題目不難,看題目最後的說明,說可以用o(mn)空間來解決,也可以用o(m+n)空間來解決。說白了這個問題就是記錄每行或每列是否有0的問題,有零則設定乙個標誌。那麼o(mn)的不用說了,就是每個位置都記錄,然後用記錄的標誌去更新原陣列。接下來說一下o(m+n)的情況:

o(m+n)則是以行或者列為單位來記錄,申請乙個標誌陣列flag[rows+cols],遍歷matrix的時候可以得到乙個元素所在的行和列,然後將flag對應的位置設定為true,公式為flag[i] = trueflag[rows + i] = true

在遍歷flag從而更新原陣列的時候,我們要分別更新每一行和每一列,因為我們的flag就是將行和列分開標記的,只是存在了一起。比如我們陣列是3 * 3,遍歷到了flag[1] = true,我們只能知道第二行包含0,但是它在第幾列我們不知道,然後遍歷到了flag[4] = flag[rows + 1] = true,此時我們才知道第一列中也有0,所以進而更新第一列。**如下:

public

void

setzeroes

(int

matrix)}}

//根據flag來更新原陣列

for(

int i =

0; i < flag.length;

++i)

else

if(flag[i])}

}

leetcode 73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...

leetcode73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 空間複雜度為o mn 的解法自不用多說,直接新建乙個和matrix等大小的矩陣,然後一行一行的掃,只...

leetcode 73 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...