在LeetCode中,零矩陣(Zero Matrix)是一個常見的算法問題。給定一個二維數組(矩陣),如果某個元素為0,則將其所在的行和列的所有元素都設置為0。本文將介紹如何實現這一功能。
給定一個 m x n
的矩陣,如果矩陣中的某個元素為0,則將其所在的行和列的所有元素都設置為0。要求在原矩陣上進行修改,不使用額外的空間。
標記法:
原地修改:
def setZeroes(matrix):
m, n = len(matrix), len(matrix[0])
first_row_has_zero = any(matrix[0][j] == 0 for j in range(n))
first_col_has_zero = any(matrix[i][0] == 0 for i in range(m))
# 使用第一行和第一列來標記
for i in range(1, m):
for j in range(1, n):
if matrix[i][j] == 0:
matrix[i][0] = 0
matrix[0][j] = 0
# 根據標記設置0
for i in range(1, m):
for j in range(1, n):
if matrix[i][0] == 0 or matrix[0][j] == 0:
matrix[i][j] = 0
# 處理第一行和第一列
if first_row_has_zero:
for j in range(n):
matrix[0][j] = 0
if first_col_has_zero:
for i in range(m):
matrix[i][0] = 0
通過使用矩陣的第一行和第一列來記錄需要設置為0的行和列,我們可以在不使用額外空間的情況下實現零矩陣。這種方法的時間復雜度為O(m*n),空間復雜度為O(1),是一種高效的解決方案。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。